كيفية العمل مع Aspose.PSD FOSS Core API في Python

كيفية العمل مع Aspose.PSD FOSS Core API في Python

Aspose.PSD FOSS لـ Python يقوم بتحميل وفحص بنية المستند PSD/PSB عبر PsdImage، وهو فئة فرعية من Image. تغطي هذه المقالة تحميل مستند، قراءة رأسه وموارد الصور، وحفظه مرة أخرى على القرص.

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

الخطوة 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 هو نقطة الدخول المستخدمة طوال هذا الدليل:

from aspose_psd_foss.psdimage import PsdImage

الخطوة 3: تحميل مستند PSD/PSB

PsdImage.load() يفتح مستندًا من مسار ملف أو من تدفق:

from aspose_psd_foss.psdimage import PsdImage

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

الخطوة 4: فحص رأس المستند

PsdImage يكشف عن حقول الرأس المقروءة من المستند المُحلل: width, height, bits_per_channel, color_mode (قيمة ColorModes)، وcompression (قيمة CompressionMethod):

print(f"{image.width}x{image.height}, {image.bits_per_channel} bpc")
print(f"Color mode: {image.color_mode}")    # e.g. ColorModes.RGB
print(f"Compression: {image.compression}")  # e.g. CompressionMethod.RLE
print(f"Flattened: {image.is_flatten}")

قيم ColorModes هي BITMAP, GRAYSCALE, INDEXED, RGB, CMYK, MULTICHANNEL, DUOTONE، وLAB. قيم CompressionMethod هي RAW, RLE, ZIP_WITHOUT_PREDICTION، وZIP_WITH_PREDICTION.


الخطوة 5: قراءة كتل موارد الصورة

image_resources يعيد إدخالات ResourceBlock التي تم تحليلها في المستند. كل كتلة تكشف عن id، name، وsize:

for resource in image.image_resources:
    print(f"Resource {resource.id} \"{resource.name}\" - {resource.size} bytes")

image_resources هو للقراءة فقط في هذا البناء المفتوح المصدر — تعيين قيمة له يسبب NotSupportedException (انظر القيود المعروفة في FAQ).


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

اكتب المستند مرة أخرى إلى القرص، ثم حرّر موارد الصورة:

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

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

PsdLoadException عند تحميل ملف. الإدخال ليس مستند PSD/PSB صالحًا، أو فشل رأسه في التحقق. تأكد من أن الملف هو ملف PSD/PSB أصلي قبل التحميل.

NotSupportedException عند الضبط image_resources or global_layer_resources. هذه الدوال الضابطة غير مدعومة في هذا البناء المفتوح المصدر. اعتبر image_resources كقراءة فقط.

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

هل يمكنني تحميل ملف PSD من تدفق بدلاً من مسار ملف؟

نعم — PsdImage.load() يقبل إما سلسلة مسار ملف أو تدفق قابل للقراءة (io.BytesIO/io.BufferedIOBase).

هل يتضمن image_resources بيانات الطبقة؟

لا. image_resources يحتوي على كتل موارد على مستوى المستند (تم تحليلها من قسم موارد صورة PSD). تُقرأ بيانات المستوى الطبقة عبر PsdImage.layers — انظر العمل مع الطبقات.

هل PsdImage.version هو إصدار تنسيق ملف PSD؟

لا. PsdImage.version يُبلغ عن رقم إصدار API داخلي متوافق مع Aspose.PSD (حالياً 6) — وهذا لا علاقة له بما إذا كان الملف المحمّل PSD أو PSB. مُعيّنه يقبل فقط القيمة 6؛ أي قيمة أخرى تُثير ValueError.

انظر أيضاً

 العربية