مقدمه

Aspose.PSD FOSS برای Python فایل‌های PSD و PSB را با استفاده از مجموعه‌ای کوچک از کلاس‌ها بارگذاری، بررسی و ذخیره می‌کند. این پست به بخش‌هایی از API هسته‌ای می‌پردازد که پست مقدمه‌ای به‌طور عمیق به آن‌ها نپرداخته بود: چگونگی ارتباط Image و PsdImage با یکدیگر، انواع مقادیر هندسی استفاده شده در سراسر کتابخانه، و نحوه گزارش خطاهای بارگذاری و ذخیره‌سازی توسط کتابخانه.


موارد گنجانده شده

تصویر و PsdImage

Image یک کلاس پایهٔ انتزاعی حداقل است: تنها load() را تعریف می‌کند که ورودی را بررسی کرده و یک زیرکلاس concrete برمی‌گرداند — برای ورودی PSD/PSB، آن زیرکلاس PsdImage است. سطح کامل سند — color_mode، version، layers، compression، bits_per_channel، size و موارد دیگر — بر روی خود PsdImage قرار دارد، نه بر پایهٔ Image.

from aspose_psd_foss.image import Image
from aspose_psd_foss.psdimage import PsdImage

with Image.load("input.psd") as image:
    assert isinstance(image, PsdImage)
    print(f"ColorMode: {image.color_mode}, Version: {image.version}")
    print(f"Size: {image.size}, Layers: {image.layer_count}")

انواع مقادیر هندسی

Point، Size، Rectangle و RectangleF انواع مقادیر استفاده شده برای مختصات و ابعاد در سراسر API هستند — Layer.bounds یک Rectangle است و PsdImage.size یک Size است. Rectangle شامل متدهای واقعی هندسی است: contains()، intersect_rect()، union_rect()، inflate() و from_left_top_right_bottom()، و موارد دیگر.

from aspose_psd_foss.rectangle import Rectangle

layer_bounds = image.layers[0].bounds
fully_inside = layer_bounds.contains(Rectangle(0, 0, 10, 10))
overlap = Rectangle.intersect_rect(layer_bounds, Rectangle(0, 0, 100, 100))
print(f"Contains (0,0,10,10): {fully_inside}, overlap: {overlap}")

بلوک‌های منبع و استثناها

PsdImage.image_resources فهرست تجزیه‌شدهٔ اشیاء ResourceBlock را برمی‌گرداند — هر کدام id، name، data_size و signature را در اختیار می‌گذارند. در این ساختار FOSS، image_resources، global_layer_resources، active_layer و has_transparency_data فقط قابل خواندن هستند و نمی‌توان آنها را مجدداً تخصیص داد — برای هر کدام setter‌ای وجود دارد که در صورت فراخوانی NotSupportedException را ایجاد می‌کند، بنابراین آنها را به‌عنوان فقط-خواندنی در نظر بگیرید حتی اگر به عنوان خصوصیات عادی ظاهر شوند.

خطاهای بارگذاری و ذخیره به‌عنوان دو نوع استثنای اختصاصی ظاهر می‌شوند: PsdLoadException وقتی سند قابل تجزیه نیست، و PsdSaveException وقتی سند نمی‌تواند بازنویسی شود.

from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadException

try:
    with PsdImage.load("input.psd") as image:
        for resource in image.image_resources:
            print(f"Resource {resource.id}: {resource.name} ({resource.data_size} bytes)")
except PsdLoadException as ex:
    print(f"Failed to load input.psd: {ex}")

شروع سریع

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

try:
    with PsdImage.load("input.psd") as image:
        print(f"Size: {image.size}, ColorMode: {image.color_mode}")
        print(f"ImageResources: {image.resource_count}")
except PsdLoadException as ex:
    print(f"Load failed: {ex}")

فرمت‌های پشتیبانی‌شده

فرمتپسوندخواندننوشتن
PSDpsd✓✓
PSBpsb✓✓

منبع باز و مجوزدهی

Aspose.PSD FOSS برای Python تحت مجوز MIT است و می‌تواند در محصولات تجاری بدون حق‌الامتیاز استفاده شود، بدون نشان ارزیابی یا محدودیت استفاده.

کتابخانه هیچ وابستگی بومی شخص ثالثی ندارد — فقط کتابخانه استاندارد Python در زمان اجرا مورد نیاز است.


شروع کار

منابع مرتبط