كيفية العمل مع طبقات PSD في Python

كيفية العمل مع طبقات PSD في Python

يوضح هذا الدليل كيفية سرد طبقات المستند، وقراءة وتعديل بيانات تعريف الطبقة القابلة للتحرير، وإعادة تموضع طبقة، وإزالة طبقة من المجموعة. تُعيد خاصية layers لكائن PsdImage المحمَّل مجموعة كائنات Layer. كل Layer تعرض بيانات تعريف قابلة للتحرير — الاسم، الرؤية، الشفافية، القص، وضع المزج، والموقع (حدود الحواف) — بالإضافة إلى حدود عامة ومعلومات القنوات للقراءة فقط.

دليل خطوة بخطوة

الخطوة 1: تثبيت الحزمة

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

الخطوة 2: استيراد الفئات المطلوبة

PsdImage يحمل المستند؛ يُستخدم BlendMode لاحقًا لتعيين وضع مزج الطبقة:

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

الخطوة 3: تحميل مستند وإدراج طبقاته

حمّل المستند، ثم كرّر layers لعرض اسم كل طبقة والهندسة الخاصة بها:

image = PsdImage.load("input.psd")

for layer in image.layers:
    print(f"{layer.name}: {layer.width}x{layer.height} at ({layer.left},{layer.top})")

الخطوة 4: قراءة وتحرير رؤية الطبقة، الشفافية، ووضع الدمج

is_visible، opacity (عادةً 0-255)، clipping، name، وblend_mode_key جميعها لديها مُعيِّنات تعمل:

layer = image.layers[0]

layer.is_visible = False          # hide the layer
layer.opacity = 200               # ~78% opacity
layer.blend_mode_key = BlendMode.MULTIPLY
layer.name = "Renamed Layer"

الخطوة 5: قراءة وإعادة تموضع حدود الطبقة

bounds، width، height، وchannels_count للقراءة فقط — لكن top، left، bottom، وright كل منها لديه مُعيّن يعمل على إعادة تموضع الطبقة:

print(f"Bounds: {layer.bounds}")
print(f"Channels: {layer.channels_count}")

layer.left = 10
layer.top = 20
layer.right = 40
layer.bottom = 60

الخطوة 6: استبدال مجموعة الطبقات

PsdImage.layers نفسه لديه مُعيّن يعمل، لذلك يمكنك استبدال المجموعة بالكامل (مثلاً، لإزالة طبقة):

image.layers = [l for l in image.layers if l.name != "Renamed Layer"]

الخطوة 7: حفظ المستند

احفظ كل تعديل تم إجراؤه في الخطوات السابقة إلى القرص، ثم حرّر موارد الصورة:

image.save("output.psd")
image.dispose()

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

NotSupportedException عند الإعداد channel_information, layer_mask_data, أو layer_blending_ranges_data. هؤلاء الثلاثة Layer المُعَيّنات غير مدعومة في هذا بناء FOSS — اعتبرها للقراءة فقط.

قيمة الشفافية تبدو خاطئة بعد ضبطها. opacity عادةً ما تكون قيمة بين 0-255، ليست كسرًا بين 0.0-1.0 أو نسبة مئوية — layer.opacity = 200 يعني تقريبًا 78% معتم (200/255).

التغييرات على الطبقة لا تظهر بعد الحفظ. تأكد من أنك تقوم بتعديل Layer العنصر المستخرج من image.layers, وتأكد من أنك تستدعي image.save() بعد إجراء تعديلاتك.

الأسئلة المتكررة

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

نعم — PsdImage.layers يحتوي على مُعيّن يعمل، لذا يمكنك تعيين قائمة مُفلترة لإزالة الطبقات (انظر الخطوة 6).

ما أوضاع المزج المتاحة؟

BlendMode يتضمن قيمًا مثل NORMAL، MULTIPLY، SCREEN، OVERLAY، وDARKEN، من بين أخرى — يتم الضبط عبر Layer.blend_mode_key.

هل بيانات قناع الطبقة متاحة؟

Layer.layer_mask_data يحتوي على مُستخرج يعمل، لكن مُعيّنه يثير NotSupportedException في هذا البناء FOSS.

انظر أيضاً

 العربية