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

Ondersteunde formaten

FormaatExtensieLezenSchrijven
PSDpsd✓✓
PSBpsb✓✓

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.


Aan de slag

Gerelateerde bronnen