المقدمة

Aspose.PSD FOSS لـ Python يقوم بتحميل وفحص وحفظ مستندات PSD و PSB عبر مجموعة صغيرة من الفئات. تستعرض هذه المقالة أجزاء من API الأساسي التي لم يغطيها المقال التمهيدي بعمق: كيف يرتبط Image بـ PsdImage، وأنواع قيم الهندسة المستخدمة عبر المكتبة، وكيف تُبلغ المكتبة عن أخطاء التحميل والحفظ.


ما الذي يتضمنه

الصورة و PsdImage

Image هي فئة أساسية مجردة قليلة الحد: تُعرّف فقط load()، التي تفحص الإدخال وتعيد فئة فرعية ملموسة — بالنسبة لإدخال 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 لكن لا يمكن إعادة تعيينها — كل منها يحتوي على مُعيّن يرفع 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 القياسية مطلوبة وقت التشغيل.


بدء الاستخدام

الموارد ذات الصلة