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 | بيانات تعريف القناة/القناع/الدمج للقراءة فقط |