كيفية حفظ وتصدير مستندات PSD في Python
يوضح هذا الدليل كيفية حفظ مستند معدل إلى مسار ملف، أو إلى تدفق مفتوح، وكيفية التخلص من صورة محمّلة لاحقًا. PsdImage.save هو نقطة الدخول العامة الوحيدة لكتابة المستند مرة أخرى — فهو يقبل إما مسار ملف أو تدفق قابل للكتابة مفتوح بالفعل. كاتب القسم منخفض المستوى الذي يقوم بترميز البايتات فعليًا هو تفاصيل تنفيذ داخلية، وليس شيئًا تستدعيه مباشرةً.
دليل خطوة بخطوة
الخطوة 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: حفظ إلى مسار ملف
حمّل وثيقة، أجرِ تعديلًا، ثم احفظها مرة أخرى إلى مسار ملف:
image = PsdImage.load("input.psd")
image.layers[0].is_visible = False
image.save("output.psd")الخطوة 4: حفظ إلى تدفق مفتوح
تمرير تدفق بدلاً من مسار يترك التدفق مفتوحًا بعد الحفظ — أنت تتحكم متى تغلقه:
with open("output.psd", "wb") as stream:
image.save(stream)الخطوة 5: تحرير الصورة
حرّر الموارد التي يحتفظ بها الـ PsdImage المحمَّل بمجرد الانتهاء منه:
image.dispose()المشكلات الشائعة والحلول
RuntimeError: PsdImage has been disposed. عند الاستدعاء save. تم التخلص من الصورة بالفعل (عبر dispose() أو with كتلة انتهت) قبل save تم استدعاؤه. استدعِ save قبل التخلص.
PsdSaveException حول طول سلسلة باسكال. قيمة السلسلة تتجاوز 255 بايت — انظر معالجة استثناءات نواة PSD and Troubleshooting.
لا توجد طريقة لإجبار حاوية PSD أو PSB عند الحفظ. لا يوجد API عام لاختيار تنسيق الحاوية الناتج — الحفظ دائمًا يعكس التنسيق الذي (is_large_document / is_psb) تم تحميل المستند به. إذا كنت بحاجة إلى تنسيق حاوية مختلف، لا توجد مسار تحويل مدعوم في هذا الإصدار المفتوح المصدر.
الأسئلة المتكررة
هل يغلق الحفظ إلى تدفق (stream) التدفق بعد ذلك؟
لا — عندما تمرر تدفقًا إلى save, يظل التدفق مفتوحًا بعد ذلك لتتحكم في دورة حياته (راجع الخطوة 4). بالمقابل، حفظ إلى مسار ملف يفتح الملف ويغلقه داخليًا.
هل يمكنني استدعاء كاتب القسم الداخلي مباشرةً بدلاً من save؟
لا — كاتب المستوى القسم هو تفاصيل تنفيذ داخلية يتم استدعاؤها بواسطة PsdImage.save. لا توجد طريقة موثقة ومدعومة لكتابة مستند خارج استدعاء save على كائن PsdImage.