Introducere

Aspose.PSD FOSS pentru Python încarcă, inspectează și salvează documente PSD și PSB printr-un mic set de clase. Acest articol examinează părți din nucleul API pe care articolul introductiv nu le-a acoperit în profunzime: cum Image și PsdImage se relaționează între ele, tipurile de valori geometrice utilizate în întreaga bibliotecă și cum biblioteca raportează erorile de încărcare și salvare.


Ce este inclus

Imagine și PsdImage

Image este o clasă de bază abstractă minimală: definește doar load(), care inspectează intrarea și returnează o subclasă concretă — pentru intrarea PSD/PSB, acea subclasă este PsdImage. Suprafața completă a documentului — color_mode, version, layers, compression, bits_per_channel, size și altele — se află pe PsdImage însuși, nu pe baza 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}")

Tipuri de valori geometrice

Point, Size, Rectangle și RectangleF sunt tipurile de valori folosite pentru coordonate și dimensiuni în întregul API — Layer.bounds este un Rectangle, iar PsdImage.size este un Size. Rectangle conține metode reale de geometrie: contains(), intersect_rect(), union_rect(), inflate() și from_left_top_right_bottom(), printre altele.

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}")

Blocuri de resurse și excepții

PsdImage.image_resources returnează lista analizată de obiecte ResourceBlock — fiecare expune id, name, data_size și signature. În această construcție FOSS, image_resources, global_layer_resources, active_layer și has_transparency_data pot fi citite, dar nu pot fi reasignate — fiecare are un setter care ridică NotSupportedException dacă este apelat, așadar tratați-le ca fiind numai în citire, chiar dacă apar ca proprietăți obișnuite.

Erorile de încărcare și salvare apar ca două tipuri de excepții dedicate: PsdLoadException când un document nu poate fi analizat și PsdSaveException când un document nu poate fi scris înapoi.

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}")

Start rapid

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}")

Formate suportate

FormatExtensieCiteșteScrie
PSDpsd✓✓
PSBpsb✓✓

Open Source & Licențiere

Aspose.PSD FOSS pentru Python este licențiat sub MIT și poate fi utilizat în produse comerciale fără redevențe, fără filigran de evaluare sau limită de utilizare.

Biblioteca nu are nicio dependență nativă terță parte — doar biblioteca standard Python este necesară la rulare.


Începeți

Resurse conexe