هسته API
API اصلی
PsdImage نقطه ورود برای بارگذاری، بازرسی و ذخیرهٔ اسناد PSD/PSB است. این کلاس، کلاس پایهٔ انتزاعی Image را گسترش میدهد که تنها load() را اعلام میکند — بقیهٔ سطح سند (width، height، save()، پشتیبانی از مدیر زمینه) بر روی خود PsdImage تعریف شدهاند و ارثبری نمیشوند.
بارگذاری و ذخیرهٔ اسناد
Image.load() یک مسیر فایل یا یک جریان را میپذیرد و یک Image برمیگرداند؛ برای ورودی PSD/PSB این همیشه یک PsdImage است، بنابراین سطح سند بلافاصله بدون نیاز به تبدیل صریح در دسترس است. PsdImage همچنین از عبارت with برای پاکسازی خودکار پشتیبانی میکند، و PsdImage.save() سند را به یک مسیر فایل یا جریان بازمینویسد.
from aspose_psd_foss.psdimage import PsdImage
with PsdImage.load(input_path) as image:
# ... inspect or edit ...
image.save(output_path)ویژگیهای سرصفحهٔ سند
PsdImage سرصفحهٔ تجزیهشده را بهصورت ویژگیهای تایپشده در دسترس میگذارد: width، height، bits_per_channel، color_mode، version، compression، size و is_flatten.
print(f"Width: {image.width}, Height: {image.height}")
print(f"ColorMode: {image.color_mode}, Version: {image.version}")
print(f"Compression: {image.compression}, IsFlatten: {image.is_flatten}")منابع تصویر
PsdImage.image_resources فهرست تجزیهشدهٔ اشیاء ResourceBlock را برمیگرداند. در این ساختار FOSS، image_resources، global_layer_resources، active_layer و has_transparency_data قابل خواندن هستند اما قابل بازتخصیص نیستند — متدهای تنظیمکنندهٔ آنها NotSupportedException را پرتاب میکند.
for resource in image.image_resources:
print(f"Resource {resource.id}: {resource.name} ({resource.data_size} bytes)")نکات و بهترین روشها
Image.load()قبلاً یکPsdImageبرای ورودی PSD/PSB برمیگرداند — نیازی به تبدیل (cast) نیست، بر خلاف برخی پورتهای دیگر این کتابخانه به زبانهای دیگر.- از عبارت
withاستفاده کنید؛PsdImageاز پروتکل مدیریت زمینه (context-manager) برای پاکسازی پشتیبانی میکند. - متغیرهای
image_resources،global_layer_resources،active_layerوhas_transparency_dataرا بهعنوان فقط-خواندنی در نظر بگیرید حتی اگر setter ای ارائه میدهند. - قبل از دسترسی اندیس به
image.layers،image.layer_countرا بررسی کنید — ممکن است یک سند صافشده لایهای نداشته باشد.
مشکلات رایج
| مشکل | دلیل | رفع |
|---|---|---|
NotSupportedException هنگام تنظیم image_resources | این ویژگی در نسخه FOSS فقط-خواندنی است، علیرغم داشتن setter | مقدار را بخوانید؛ سعی نکنید آن را مجدداً اختصاص دهید |
لیست خالی image.layers در یک سند مسطح | is_flatten True است و سند هیچ لایهٔ تجزیهشدهای ندارد | قبل از ایندکس کردن به image.layers، image.layer_count (یا image.is_flatten) را بررسی کنید |
FAQ
آیا بارگذاری یک سند PSD دادههای پیکسل را رمزگشایی میکند؟
خیر. PsdImage.load() هدر سند، فراداده لایه و منابع را بدون رمزگشایی یا رندر دادههای پیکسل تجزیه میکند.
آیا میتوانم یک فایل PSD را به فرمت تصویر دیگری تبدیل کنم؟
خیر. این کتابخانه فقط اسناد PSD/PSB را بارگذاری، بررسی و ذخیره میکند — دادههای پیکسل را رندر نمیکند یا به فرمتهای تصویر دیگر تبدیل نمیشود.
API Reference خلاصه
| کلاس/متد | توضیح |
|---|---|
Image.load(path) / Image.load(stream) | یک سند PSD یا PSB را بارگذاری میکند |
PsdImage.save(path) / PsdImage.save(stream) | سند را ذخیره میکند |
PsdImage.width / height / bits_per_channel / color_mode / version / compression / size / is_flatten | ویژگیهای سرصفحه سند |
PsdImage.image_resources | بلوکهای منبع تصویر تجزیهشده (فقط-خواندنی) |