چگونه یک سند PSD را در Python بارگذاری کنیم
PsdImage.load نقطهی ورودی عمومی واحد برای باز کردن یک سند PSD/PSB است — آن میتواند یک مسیر فایل یا یک جریان قابل خواندن که از قبل باز است را بپذیرد. خوانندهی سطح پایین که به صورت بخش-به-بخش کار میکند و به صورت داخلی به آن واگذار میشود، چیزی نیست که شما بهصورت مستقیم فراخوانی کنید.
راهنمای گام به گام
مرحله ۱: نصب بسته
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مرحله ۲: وارد کردن کلاسهای مورد نیاز
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadExceptionمرحله ۳: بارگذاری از مسیر فایل
image = PsdImage.load("input.psd")
print(f"Loaded: {image.width}x{image.height}")
image.dispose()مرحله ۴: بارگذاری از یک جریان
یک جریان نیازی به قابلیت جستجو ندارد — 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. خطای I/O هنگام خواندن از خود جریان رخ داد، بستهبندی شد و به عنوان یک PsdLoadException.
ArgumentNullException هنگام فراخوانی load. load با … فراخوانی شد None بهعنوان آرگومان جریان.
سوالات متداول
آیا قبل از فراخوانی load نیاز است تا جریان را به ابتدای خود بازگردانم؟
نه — اگر جریان قابل جستجو باشد، load پس از خواندن موقعیت اصلی آن را بازمیگرداند؛ اگر قابل جستجو نباشد، load همچنان کار میکند زیرا محتوای جریان را بهصورت داخلی پیش از تجزیهبندی در بافر ذخیره میکند.
تفاوت بین دو خطای FileNotFoundError/PsdLoadException بالا چیست؟
یک مسیر فایل گمشده خطای استاندارد را برمیانگیزد FileNotFoundError قبل از آغاز هر تجزیهای. یک PsdLoadException بهجای آن به این معنی است که یک فایل (یا جریان) یافت و باز شد، اما دادههای PSD/PSB خود بهصورت ناقص، خراب یا بههر شکل دیگر پس از شروع تجزیه قابل خواندن نیست — همچنین ببینید Troubleshooting برای موارد مرتبط با نسخه و مرز PsdLoadException انواع.