כיצד לטעון מסמך 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. זרם המקור נגמר באמצע הפענוח ( EOFError בקריאת) — הקובץ כנראה נחתך.
PsdLoadException: Failed to read PSD/PSB data from the source stream. אירעה שגיאת קלט/פלט בזמן קריאה מהזרם עצמו, עטופה והועלתה מחדש כ PsdLoadException.
ArgumentNullException בקריאה ל load. load הוקרא עם None כאשר הוא ארגומנט הזרם.
שאלות נפוצות
האם צריך לבצע seek לזרם חזרה להתחלה לפני קריאה ל-load?
לא — אם הזרם ניתן ל-seek, load משחזר את המיקום המקורי שלו לאחר הקריאה; אם הוא אינו ניתן ל-seek, load עדיין פועל מכיוון שהוא מאגר את תוכן הזרם פנימית לפני הפירוש.
מה ההבדל בין שני הכישלונות FileNotFoundError/PsdLoadException למעלה?
נתיב קובץ חסר מעלה את הסטנדרט FileNotFoundError לפני שמתחיל ניתוח כלשהו. A PsdLoadException במקום זאת משמעותו שקובץ (או זרם) נמצא ונפתח, אך הנתונים של PSD/PSB עצמם קצרים, פגומים, או שלא ניתן לקרוא אותם לאחר שהחל ניתוח — ראה גם Troubleshooting לגרסה ולנושאים הקשורים לגבול PsdLoadException וריאנטים.