چگونه با Aspose.PSD FOSS Core API در Python کار کنیم
Aspose.PSD FOSS برای Python، ساختار سند PSD/PSB را از طریق PsdImage، یک زیرکلاس از Image، بارگذاری و بررسی میکند. این مقاله به بارگذاری یک سند، خواندن هدر و منابع تصویر آن، و ذخیرهسازی مجدد آن بر روی دیسک میپردازد.
راهنمای گام به گام
مرحله 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مرحله ۳: بارگذاری یک سند PSD/PSB
PsdImage.load() یک سند را از مسیر فایل یا یک جریان باز میکند:
from aspose_psd_foss.psdimage import PsdImage
image = PsdImage.load("input.psd")مرحله ۴: بررسی سرصفحه سند
PsdImage فیلدهای سرصفحهای را که از سند تجزیهشده خوانده شدهاند، نشان میدهد: width، height، bits_per_channel، color_mode (یک مقدار ColorModes)، و compression (یک مقدار CompressionMethod):
print(f"{image.width}x{image.height}, {image.bits_per_channel} bpc")
print(f"Color mode: {image.color_mode}") # e.g. ColorModes.RGB
print(f"Compression: {image.compression}") # e.g. CompressionMethod.RLE
print(f"Flattened: {image.is_flatten}")مقادیر ColorModes عبارتند از BITMAP، GRAYSCALE، INDEXED، RGB، CMYK، MULTICHANNEL، DUOTONE و LAB. مقادیر CompressionMethod عبارتند از RAW، RLE، ZIP_WITHOUT_PREDICTION و ZIP_WITH_PREDICTION.
مرحله ۵: خواندن بلوکهای منبع تصویر
image_resources ورودیهای ResourceBlock تجزیهشده سند را برمیگرداند. هر بلوک id، name و size را نشان میدهد:
for resource in image.image_resources:
print(f"Resource {resource.id} \"{resource.name}\" - {resource.size} bytes")image_resources در این ساختار FOSS فقط-خواندنی است — اختصاص مقدار به آن خطا ایجاد میکند NotSupportedException (به محدودیتهای شناختهشده در FAQ).
مرحله ۶: ذخیرهسازی سند
سند را دوباره روی دیسک بنویسید، سپس منابع تصویر را آزاد کنید:
image.save("output.psd")
image.dispose()مشکلات رایج و راهحلها
PsdLoadException هنگام بارگذاری یک فایل. ورودی یک سند معتبر PSD/PSB نیست، یا سرآیند آن اعتبارسنجی را پاس نکرده است. قبل از بارگذاری، تأیید کنید که فایل یک فایل واقعی PSD/PSB است.
NotSupportedException هنگام تنظیم image_resources or global_layer_resources. این تنظیمکنندهها در این ساختار FOSS پشتیبانی نمیشوند. در نظر بگیرید image_resources به عنوان فقط-خواندنی.
سوالات متداول
آیا میتوانم یک فایل PSD را از یک جریان (stream) بهجای مسیر فایل بارگذاری کنم؟
بله — PsdImage.load() یک رشته مسیر فایل یا یک جریان قابل خواندن (io.BytesIO/io.BufferedIOBase) را میپذیرد.
آیا image_resources شامل دادههای لایه است؟
خیر. image_resources بلوکهای منابع در سطح سند را نگه میدارد (از بخش منابع تصویر PSD تجزیه شده). دادههای سطح لایه از طریق PsdImage.layers — ببینید کار با لایهها.
آیا PsdImage.version نسخه فرمت فایل PSD است؟
نه. PsdImage.version شماره نسخه API سازگار با Aspose.PSD داخلی را گزارش میدهد (در حال حاضر 6) — این مورد ارتباطی با این ندارد که فایل بارگذاریشده PSD است یا PSB. تنظیمکنندهٔ آن فقط مقدار 6 را میپذیرد؛ هر مقدار دیگری باعث بروز ValueError میشود.