Bevezetés
Aspose.PSD FOSS a(z) Python számára kis számú osztályon keresztül tölti be, ellenőrzi és menti a PSD és PSB dokumentumokat. Ez a bejegyzés a mag API azon részeit vizsgálja, amelyeket a bevezető bejegyzés nem fedett le részletesen: hogyan kapcsolódik egymáshoz a Image és a PsdImage, a könyvtárban használt geometriai értéktípusok, valamint hogy a könyvtár hogyan jelzi a betöltési és mentési hibákat.
Mi van benne
Kép és PsdImage
Image egy minimális absztrakt ősosztály: csak a load() definiálja, amely ellenőrzi a bemenetet és visszaad egy konkrét alosztályt — PSD/PSB bemenet esetén ez az alosztály a PsdImage. A teljes dokumentum felület — color_mode, version, layers, compression, bits_per_channel, size és továbbiak — a PsdImage saját magán él, nem a Image alapon.
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}")
Geometriai értéktípusok
Point, Size, Rectangle és RectangleF a koordináták és kiterjedések értéktípusai a API egészében — a Layer.bounds egy Rectangle, a PsdImage.size pedig egy Size. A Rectangle valós geometriai metódusokat tartalmaz: contains(), intersect_rect(), union_rect(), inflate() és from_left_top_right_bottom(), többek között.
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}")
Erőforrásblokkok és Kivételek
PsdImage.image_resources visszaadja a feldolgozott ResourceBlock objektumok listáját — minden egyes objektum tartalmazza a id, name, data_size és signature attribútumokat. Ebben a FOSS változatban a image_resources, global_layer_resources, active_layer és has_transparency_data csak olvasható, de nem állítható be újra — mindegyiknek van egy setterje, amely NotSupportedException-t dob, ha meghívják, ezért tekintse őket csak olvashatónak, még ha úgy is tűnnek, mintha szokásos tulajdonságok lennének.
A betöltési és mentési hibák két dedikált kivételtípusként jelennek meg: PsdLoadException, ha egy dokumentumot nem lehet feldolgozni, és PsdSaveException, ha egy dokumentumot nem lehet visszaírni.
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}")
Gyors kezdés
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}")
Támogatott formátumok
| Formátum | Kiterjesztés | Olvasás | Írás |
|---|---|---|---|
| PSD | psd | ✓ | ✓ |
| PSB | psb | ✓ | ✓ |
Nyílt forráskód és licencelés
Aspose.PSD FOSS a Python számára MIT licenc alatt áll, és kereskedelmi termékekben használható jogdíj nélkül, értékelő vízjel vagy használati korlát nélkül.
A könyvtárnak nincsenek harmadik féltől származó natív függőségei — csak a Python szabványos könyvtárra van szükség futásidőben.