Úvod

Aspose.PSD FOSS pro Python načítá, kontroluje a ukládá PSD a PSB dokumenty prostřednictvím malého množství tříd. Tento příspěvek se zabývá částmi jádra API, které úvodní příspěvek neprobral do hloubky: jak Image a PsdImage spolu souvisejí, typy hodnot geometrie používané v celé knihovně a jak knihovna hlásí chyby při načítání a ukládání.


Co je zahrnuto

Obrázek a PsdImage

Image je minimální abstraktní základní třída: definuje pouze load(), která kontroluje vstup a vrací konkrétní podtřídu — pro PSD/PSB vstup je tato podtřída PsdImage. Celý dokumentový povrch — color_mode, version, layers, compression, bits_per_channel, size a další — žije na samotném PsdImage, nikoli na základně 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}")

Typy hodnot geometrie

Point, Size, Rectangle a RectangleF jsou typy hodnot používané pro souřadnice a rozměry napříč API — Layer.bounds je Rectangle a PsdImage.size je Size. Rectangle obsahuje skutečné geometrické metody: contains(), intersect_rect(), union_rect(), inflate() a from_left_top_right_bottom(), mezi jinými.

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

Bloky zdrojů a výjimky

PsdImage.image_resources vrací analyzovaný seznam objektů ResourceBlock — každý z nich zpřístupňuje id, name, data_size a signature. V této FOSS verzi lze image_resources, global_layer_resources, active_layer a has_transparency_data číst, ale ne přepisovat — každý má setter, který při volání vyvolá NotSupportedException, takže je považujte za jen pro čtení, i když vypadají jako běžné vlastnosti.

Chyby načítání a ukládání se projevují jako dva vyhrazené typy výjimek: PsdLoadException, když dokument nelze analyzovat, a PsdSaveException, když dokument nelze znovu zapsat.

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

Rychlý start

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

Podporované formáty

FormátPříponaČístZapsat
PSDpsd✓✓
PSBpsb✓✓

Open source & licencování

Aspose.PSD FOSS pro Python je licencováno pod licencí MIT a může být použito v komerčních produktech bez poplatků, bez evaluačního vodoznaku ani omezení používání.

Knihovna nemá žádné třetí strany nativní závislosti — pouze standardní knihovna Python je vyžadována za běhu.


Začínáme

Související zdroje