مقدمه
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:$PYTHONPATHfrom 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}")
قالبهای پشتیبانیشده
| قالب | پسوند | خواندن | نوشتن |
|---|---|---|---|
| PSD | psd | ✓ | ✓ |
| PSB | psb | ✓ | ✓ |
منبع باز و مجوزدهی
Aspose.PSD FOSS برای Python تحت مجوز MIT است و میتواند در محصولات تجاری بدون حقالامتیاز استفاده شود، بدون هیچ علامتآبی ارزیابی یا محدودیت استفاده.
این کتابخانه هیچ وابستگی بومی شخص ثالثی ندارد — تنها کتابخانه استاندارد Python در زمان اجرا مورد نیاز است.