نحوه ذخیره و استخراج اسناد PSD در Python
این راهنما نشان میدهد چگونه یک سند ویرایششده را به مسیر فایل، به یک جریان باز ذخیره کنید و پس از آن چگونه تصویر بارگذاریشده را آزاد کنید. PsdImage.save تنها نقطهٔ ورودی عمومی برای نوشتن مجدد یک سند است — این متد میتواند یک مسیر فایل یا یک جریان قابل نوشتن که از قبل باز است را بپذیرد. نویسندهٔ بخش سطح پایین که رمزگذاری بایتها را انجام میدهد، جزئیات پیادهسازی داخلی است و چیزی نیست که بهصورت مستقیم فراخوانی کنید.
راهنمای گامبهگام
مرحله ۱: نصب بسته
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مرحله ۲: وارد کردن کلاسهای مورد نیاز
PsdImage تنها کلاسی است که مثالهای این راهنما به آن نیاز دارند:
from aspose_psd_foss.psdimage import PsdImageمرحله ۳: ذخیره در مسیر فایل
یک سند را بارگذاری کنید، ویرایشی انجام دهید، سپس آن را به مسیر فایل ذخیره کنید:
image = PsdImage.load("input.psd")
image.layers[0].is_visible = False
image.save("output.psd")مرحله ۴: ذخیره در یک جریان باز
ارسال یک جریان به جای مسیر، پس از ذخیرهسازی جریان را باز میگذارد — شما زمان بسته شدن آن را کنترل میکنید:
with open("output.psd", "wb") as stream:
image.save(stream)مرحله ۵: آزادسازی تصویر
پس از اتمام کار، منابعی که PsdImage بارگذاریشده نگه میدارد را آزاد کنید:
image.dispose()مسائل رایج و راهحلها
RuntimeError: PsdImage has been disposed. هنگام فراخوانی save. تصویر قبلاً از بین رفته بود (از طریق dispose() یا یک with بلوکی که خارج شده بود) قبل از save فراخوانی شد. فراخوانی save قبل از حذف.
PsdSaveException درباره طول رشته پاسکال. یک مقدار رشته بیش از ۲۵۵ بایت است — ببینید مدیریت استثناهای هسته PSD and Troubleshooting.
هیچ راهی برای اجبار یک محفظه PSD یا PSB هنگام ذخیرهسازی وجود ندارد. هیچ API عمومی برای انتخاب قالب محفظه خروجی وجود ندارد — ذخیرهسازی همیشه قالبی را که سند با آن بارگذاری شده بود، بازتاب میدهد (is_large_document / is_psb) سند بارگذاری شده بود. اگر به قالب محفظه متفاوتی نیاز دارید، مسیر تبدیل پشتیبانیشدهای در این ساختار FOSS وجود ندارد.
سوالات متداول
آیا ذخیرهسازی به یک جریان، پس از آن آن جریان را میبندد؟
نه — وقتی یک جریان را به save میفرستید، جریان پس از آن باز میماند تا شما دورهٔ حیات آن را کنترل کنید (به گام ۴ نگاه کنید). در مقابل، ذخیرهسازی به مسیر فایل، فایل را بهصورت داخلی باز و بسته میکند.
آیا میتوانم نویسندهٔ بخش داخلی را مستقیماً بهجای save صدا بزنم؟
نه — نویسندهٔ سطح بخش یک جزئیات پیادهسازی داخلی است که توسط PsdImage.save فراخوانی میشود. هیچ روش مستند و پشتیبانیشدهای برای نوشتن یک سند خارج از فراخوانی save بر روی یک نمونهٔ PsdImage وجود ندارد.