كيفية تحميل مستند PSD في Python
PsdImage.load هو نقطة الدخول العامة الوحيدة لفتح مستند PSD/PSB — وهو يقبل إما مسار ملف أو تدفق قابل للقراءة مفتوح مسبقًا. قارئ القسم-بقسم منخفض المستوى الذي يُفوض إليه داخليًا ليس شيئًا تستدعيه مباشرةً.
دليل خطوة بخطوة
الخطوة 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: استيراد الفئات المطلوبة
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadExceptionالخطوة 3: التحميل من مسار ملف
image = PsdImage.load("input.psd")
print(f"Loaded: {image.width}x{image.height}")
image.dispose()الخطوة 4: التحميل من دفق
ليس من الضروري أن يكون الدفق قابلاً للتمرير — load يقرأ محتوياته بالكامل في مخزن داخلي قبل التحليل:
with open("input.psd", "rb") as stream:
image = PsdImage.load(stream)
print(f"Loaded from stream: {image.width}x{image.height}")
image.dispose()المشكلات الشائعة والحلول
FileNotFoundError: File not found: .... المسار الممرّر إلى load لا يشير إلى ملف موجود — load checks os.path.isfile قبل محاولة فتحه.
PsdLoadException: Unexpected end of PSD/PSB data while reading the file structure. انتهى تدفق المصدر من البيانات أثناء التحليل (an EOFError أثناء القراءة) — من المحتمل أن الملف مقطوع.
PsdLoadException: Failed to read PSD/PSB data from the source stream. حدث خطأ I/O أثناء القراءة من التدفق نفسه، تم تغليفه وإعادة رفعه كـ PsdLoadException.
ArgumentNullException عند استدعاء load. load تم استدعاؤه بـ None كمعامل الـ stream.
الأسئلة المتكررة
هل أحتاج إلى إرجاع المؤشر إلى بداية الدفق قبل استدعاء load؟
لا — إذا كان الدفق قابلًا للتمرير، فإن load يعيد موقعه الأصلي بعد القراءة؛ وإذا لم يكن قابلًا للتمرير، فإن load لا يزال يعمل لأنه يخزن محتويات الدفق داخليًا قبل التحليل.
ما الفرق بين الفشلين FileNotFoundError/PsdLoadException المذكورين أعلاه؟
مسار ملف مفقود يُثير الخطأ القياسي FileNotFoundError قبل بدء أي تحليل. A PsdLoadException بدلاً من ذلك يعني أن ملفًا (أو تدفقًا) تم العثور عليه وفتحُه، لكن بيانات PSD/PSB نفسها مقطوعة أو تالفة أو غير قابلة للقراءة بمجرد بدء التحليل — انظر أيضًا Troubleshooting للمتعلقة بالإصدار والحدود PsdLoadException البدائل.