Ú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:$PYTHONPATHfrom 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át | Přípona | Číst | Zapsat |
|---|---|---|---|
| PSD | psd | ✓ | ✓ |
| PSB | psb | ✓ | ✓ |
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.