المقدمة

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 هو قيمة تعداد BlendMode — المكتبة تعرف 29 وضع دمج قياسي في PSD (NORMAL، MULTIPLY، SCREEN، OVERLAY، DARKEN، LIGHTEN، COLORDODGE، COLORBURN، HARDLIGHT، SOFTLIGHT، DIFFERENCE، EXCLUSION، HUE، SATURATION، COLOR، LUMINOSITY، وغيرها). تعداد علمات 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 (a 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 القياسية مطلوبة وقت التشغيل.


البدء

الموارد ذات الصلة