Einleitung

Aspose.PSD FOSS für Python lädt, prüft und speichert PSD- und PSB-Dokumente mit einer kleinen Menge von Klassen. Dieser Beitrag betrachtet Teile des Kern-API, die im einführenden Beitrag nicht ausführlich behandelt wurden: wie Image und PsdImage zueinander in Beziehung stehen, die für Geometrie verwendeten Werttypen in der gesamten Bibliothek und wie die Bibliothek Lade- und Speicherfehler meldet.


Was enthalten ist

Bild und PsdImage

Image ist eine minimale abstrakte Basisklasse: Sie definiert nur load(), das die Eingabe prüft und eine konkrete Unterklasse zurückgibt — für PSD/PSB-Eingaben ist diese Unterklasse PsdImage. Die gesamte Dokumentoberfläche — color_mode, version, layers, compression, bits_per_channel, size und mehr — befindet sich auf PsdImage selbst, nicht auf der 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}")

Geometrie-Werttypen

Point, Size, Rectangle und RectangleF sind die Werttypen, die für Koordinaten und Ausmaße im gesamten API verwendet werden — Layer.bounds ist ein Rectangle, und PsdImage.size ist ein Size. Rectangle enthält echte Geometriemethoden: contains(), intersect_rect(), union_rect(), inflate() und from_left_top_right_bottom() unter anderem.

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

Ressourcenblöcke und Ausnahmen

PsdImage.image_resources gibt die geparste Liste von ResourceBlock-Objekten zurück — jedes davon stellt id, name, data_size und signature bereit. In diesem FOSS-Build können image_resources, global_layer_resources, active_layer und has_transparency_data gelesen, aber nicht neu zugewiesen werden — jedes hat einen Setter, der NotSupportedException auslöst, wenn er aufgerufen wird, behandeln Sie sie also als schreibgeschützt, obwohl sie wie gewöhnliche Eigenschaften erscheinen.

Lade- und Speicherfehler treten als zwei dedizierte Ausnahmetypen auf: PsdLoadException, wenn ein Dokument nicht geparst werden kann, und PsdSaveException, wenn ein Dokument nicht zurückgeschrieben werden kann.

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

Schnellstart

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

Unterstützte Formate

FormatErweiterungLesenSchreiben
PSDpsd✓✓
PSBpsb✓✓

Open Source & Lizenzierung

Aspose.PSD FOSS für Python ist unter der MIT-Lizenz veröffentlicht und darf in kommerziellen Produkten ohne Lizenzgebühren verwendet werden, ohne Evaluierungswasserzeichen oder Nutzungslimit.

Die Bibliothek hat keinerlei native Drittanbieter-Abhängigkeiten — nur die Python Standardbibliothek wird zur Laufzeit benötigt.


Erste Schritte

Verwandte Ressourcen