Inleiding
Aspose.PSD FOSS voor Python laadt, inspecteert en slaat PSD- en PSB-documenten op via een kleine set klassen. Deze post bekijkt delen van de kern API die de inleidende post niet grondig behandelde: hoe Image en PsdImage zich tot elkaar verhouden, de geometriewaarde-types die door de hele bibliotheek worden gebruikt, en hoe de bibliotheek fouten bij laden en opslaan rapporteert.
Wat er inbegrepen is
Afbeelding en PsdImage
Image is een minimale abstracte basis-klasse: hij definieert alleen load(), die de invoer inspecteert en een concrete subklasse retourneert — voor PSD/PSB invoer is die subklasse PsdImage. Het volledige documentoppervlak — color_mode, version, layers, compression, bits_per_channel, size en meer — bevindt zich op PsdImage zelf, niet op de Image basis.
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}")
Geometriewaarde-types
Point, Size, Rectangle en RectangleF zijn de waardetypes die worden gebruikt voor coördinaten en afmetingen in de API — Layer.bounds is een Rectangle, en PsdImage.size is een Size. Rectangle bevat echte geometrie-methoden: contains(), intersect_rect(), union_rect(), inflate() en from_left_top_right_bottom(), onder andere.
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}")
Resourceblokken en uitzonderingen
PsdImage.image_resources retourneert de geparseerde lijst van ResourceBlock objecten — elk object exposeert id, name, data_size en signature. In deze FOSS-build kunnen image_resources, global_layer_resources, active_layer en has_transparency_data gelezen worden maar niet opnieuw toegewezen — elk heeft een setter die NotSupportedException opwerpt als deze wordt aangeroepen, dus behandel ze als alleen-lezen hoewel ze verschijnen als gewone eigenschappen.
Laad- en opslaffouten komen naar voren als twee toegewijde exceptietypen: PsdLoadException wanneer een document niet kan worden geparseerd, en PsdSaveException wanneer een document niet kan worden weggeschreven.
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}")
Snelstart
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}")
Ondersteunde formaten
| Formaat | Extensie | Lezen | Schrijven |
|---|---|---|---|
| PSD | psd | ✓ | ✓ |
| PSB | psb | ✓ | ✓ |
Open source & licenties
Aspose.PSD FOSS voor Python is gelicentieerd onder de MIT-licentie en mag worden gebruikt in commerciële producten zonder royalty’s, zonder evaluatiewatermerk of gebruikslimiet.
De bibliotheek heeft geen third-party native afhankelijkheden — alleen de Python standaardbibliotheek is vereist tijdens runtime.