Layers

Layers

PsdImage.layers تُرجِع كل طبقة مُحلَّلة كقائمة من كائنات Layer. كل Layer يكشف عن هندسته الخاصة، وإمكانية رؤيته، وحالة التركيب، والبيانات الوصفية الخاصة بقنواته، والقناع، ونطاقات الدمج.


قراءة بيانات تعريف الطبقة

يمكن قراءة name، bounds (والمتفرعات width/height/top/left/bottom/right)، is_visible، opacity، clipping، blend_mode_key، وchannels_count مباشرةً.

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}")

تعديلات البيانات الوصفية المدعومة

يمكن تعديل name، is_visible، opacity، clipping، blend_mode_key، وأربعة حواف الحدود (top/left/bottom/right) في موضعها وإعادة كتابتها باستخدام PsdImage.save().

from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.layers.blendmode import BlendMode

with PsdImage.load("input.psd") as image:
    layer = image.layers[0]
    layer.name = f"{layer.name} (edited)"
    layer.is_visible = not layer.is_visible
    layer.opacity = 128
    layer.blend_mode_key = BlendMode.MULTIPLY
    image.save("output.psd")

بيانات تعريف القناة والقناع

channel_information، layer_mask_data و layer_blending_ranges_data هي للقراءة فقط في هذا الإصدار المفتوح المصدر — مُعيناتهم تثير NotSupportedException.

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}")

إزالة أو إعادة ترتيب الطبقات

PsdImage.layers يحتوي على مُعين بالإضافة إلى مُسترجع: إسناد قائمة مُفلترة أو مُعاد ترتيبها يستبدل مجموعة طبقات المستند.

from aspose_psd_foss.psdimage import PsdImage

with PsdImage.load("input.psd") as image:
    image.layers = [layer for layer in image.layers if layer.is_visible]
    image.save("output.psd")

نصائح وأفضل الممارسات

  • قم بالفهرسة إلى image.layers حسب الموقع؛ ترتيب القائمة يطابق ترتيب طبقات المستند نفسه.
  • blend_mode_key يقبل أي قيمة تعداد BlendMode — لا يتم إجراء أي تحقق مقابل وضع اللون المعلن في المستند.
  • يمكن قراءة channel_information، layer_mask_data، وlayer_blending_ranges_data ولكن لا يمكن إعادة تعيينهم أبداً.
  • استدعِ PsdImage.save() مرة واحدة بعد جميع التعديلات؛ كل استدعاء يكتب المستند بالكامل.

المشكلات الشائعة

المشكلةالسببالإصلاح
NotSupportedException عند تعيين channel_information، layer_mask_data أو layer_blending_ranges_dataهذه الخصائص الثلاثة للقراءة فقط في نسخة FOSS على الرغم من وجود setterاقرأ القيمة؛ لا تحاول إعادة تعيينها
layer_mask_data الوصول عندما لا يوجد قناعليس كل طبقة لديها قسم فرعي للقناعتحقق من layer.has_mask_data قبل قراءة layer.layer_mask_data

FAQ

هل يمكنني إزالة طبقة؟

نعم — أعد تعيين image.layers إلى قائمة مُفلترة.

هل يمكنني تغيير قناة الطبقة أو بيانات القناع؟

لا. channel_information، layer_mask_data، وlayer_blending_ranges_data للقراءة فقط — فقط يمكن تغيير name، is_visible، opacity، clipping، blend_mode_key، وحواف الحدود.


API Reference ملخص

فئة/طريقةوصف
PsdImage.layersيحصل أو يعيّن مجموعة الطبقات — قابلة للتعديل للإزالة/إعادة الترتيب
Layer.name / is_visible / opacity / clipping / blend_mode_key / top / left / bottom / rightتعديلات بيانات التعريف للطبقة المدعومة
Layer.bounds / width / height / channels_countهندسة الطبقة للقراءة فقط
Layer.channel_information / layer_mask_data / layer_blending_ranges_dataبيانات تعريف القناة/القناع/الدمج للقراءة فقط

انظر أيضاً

 العربية