مقدمه

PsdImage.layers تمام لایه‌ها را در یک سند PSD یا PSB به عنوان فهرستی از اشیای Layer باز می‌گرداند. این پست به‌طور خاص به آنچه یک Layer نشان می‌دهد می‌پردازد: هندسه و وضعیت بصری آن، فهرست‌های حالت ترکیب و پرچم ماسک، و کلاس‌های متادیتا که کانال‌ها، ماسک و بازه‌های ترکیب یک لایه را توصیف می‌کنند.


موارد گنجانده شده

کلاس لایه

هر Layer دارای یک نام (name)، یک Rectangle محدود‌کننده (bounds، با width/height/top/left/bottom/right مشتق‌شده)، وضعیت نمایش و ترکیب (is_visible، opacity، clipping، blend_mode_key)، و یک شمارش کانال (channels_count) است. name، is_visible، opacity، clipping، blend_mode_key و چهار لبهٔ محدودیت می‌توانند همگی با PsdImage.save() تغییر داده شده و بازنویسی شوند.

from aspose_psd_foss.psdimage import PsdImage

with PsdImage.load("input.psd") as image:
    for layer in image.layers:
        print(f"{layer.name}: {layer.bounds}, "
              f"Visible={layer.is_visible}, Opacity={layer.opacity}, "
              f"BlendMode={layer.blend_mode_key}")

حالت‌های ترکیب و پرچم‌های ماسک

blend_mode_key یک مقدار enum BlendMode است — کتابخانه ۲۹ حالت ترکیب استاندارد PSD را تعریف می‌کند (NORMAL، MULTIPLY، SCREEN، OVERLAY، DARKEN، LIGHTEN، COLORDODGE، COLORBURN، HARDLIGHT، SOFTLIGHT، DIFFERENCE، EXCLUSION، HUE، SATURATION، COLOR، LUMINOSITY و سایر). یک enum پرچم LayerMaskFlags جداگانه (NONE، RELATIVE_TO_LAYER، DISABLED، INVERTED_WHEN_BLENDING، USER_MASK_FROM_RENDERING_OTHER_DATA، USER_OR_VECTOR_MASKS_HAVE_PARAMETERS) رفتار رندر ماسک را توصیف می‌کند زمانی که یک لایه دارای آن باشد.

متادیتای کانال و ماسک

Layer.channel_information فهرستی از اشیاء ChannelInformation را برمی‌گرداند که شناسه هر کانال، روش فشرده‌سازی و طول بایت آن را توصیف می‌کند. Layer.layer_mask_data (یک LayerMaskDataShort در صورت وجود) مرزها و پرچم‌های ماسک لایه را شرح می‌دهد؛ Layer.layer_blending_ranges_data محدوده‌های ترکیبی و ترکیب هر کانال را نشان می‌دهد. هر سه این ویژگی‌ها در این ساختار FOSS فقط-قابل-خواندن هستند — تنظیم‌کننده‌های آنها اگر فراخوانی شوند NotSupportedException را ایجاد می‌کند، حتی اگر به‌عنوان ویژگی‌های معمولی ظاهر شوند.

from aspose_psd_foss.psdimage import PsdImage

with PsdImage.load("input.psd") as image:
    layer = image.layers[0]
    for channel in layer.channel_information:
        print(f"Channel {channel.ChannelID}: {channel.compression_method}, {channel.length} bytes")

    if layer.has_mask_data:
        mask = layer.layer_mask_data
        print(f"Mask bounds: {mask.mask_rectangle}, flags: {mask.flags}")

شروع سریع

git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-Python.git
cd Aspose.PSD-FOSS-for-Python
# No packaging manifest is published yet -- run from this folder,
# or add it to PYTHONPATH:
export PYTHONPATH=$PWD:$PYTHONPATH
from aspose_psd_foss.psdimage import PsdImage

with PsdImage.load("input.psd") as image:
    visible_layers = [layer for layer in image.layers if layer.is_visible]
    for layer in visible_layers:
        print(f"{layer.name}: Opacity={layer.opacity}, BlendMode={layer.blend_mode_key}")

قالب‌های پشتیبانی‌شده

قالبپسوندخواندننوشتن
PSDpsd✓✓
PSBpsb✓✓

منبع باز و مجوزدهی

Aspose.PSD FOSS برای Python تحت مجوز MIT است و می‌تواند در محصولات تجاری بدون حق‌الامتیاز استفاده شود، بدون هیچ علامت‌آبی ارزیابی یا محدودیت استفاده.

این کتابخانه هیچ وابستگی بومی شخص ثالثی ندارد — تنها کتابخانه استاندارد Python در زمان اجرا مورد نیاز است.


شروع به کار

منابع مرتبط