Wie man mit dem Aspose.PSD FOSS Core API in Python arbeitet

Wie man mit dem Aspose.PSD FOSS Core API in Python arbeitet

Aspose.PSD FOSS für Python lädt und inspiziert die PSD/PSB Dokumentenstruktur über PsdImage, eine Unterklasse von Image. Dieser Artikel behandelt das Laden eines Dokuments, das Lesen seines Headers und seiner Bildressourcen sowie das Speichern zurück auf die Festplatte.

Schritt-für-Schritt-Anleitung

Schritt 1: Paket installieren

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

Schritt 2: Erforderliche Klassen importieren

PsdImage ist der Einstiegspunkt, der in diesem Leitfaden durchgängig verwendet wird:

from aspose_psd_foss.psdimage import PsdImage

Schritt 3: Laden Sie ein PSD/PSB-Dokument

PsdImage.load() öffnet ein Dokument von einem Dateipfad oder einem Stream:

from aspose_psd_foss.psdimage import PsdImage

image = PsdImage.load("input.psd")

Schritt 4: Dokumenten-Header untersuchen

PsdImage stellt Header-Felder zur Verfügung, die aus dem geparsten Dokument gelesen wurden: width, height, bits_per_channel, color_mode (ein ColorModes-Wert) und compression (ein CompressionMethod-Wert):

print(f"{image.width}x{image.height}, {image.bits_per_channel} bpc")
print(f"Color mode: {image.color_mode}")    # e.g. ColorModes.RGB
print(f"Compression: {image.compression}")  # e.g. CompressionMethod.RLE
print(f"Flattened: {image.is_flatten}")

ColorModes-Werte sind BITMAP, GRAYSCALE, INDEXED, RGB, CMYK, MULTICHANNEL, DUOTONE und LAB. CompressionMethod-Werte sind RAW, RLE, ZIP_WITHOUT_PREDICTION und ZIP_WITH_PREDICTION.


Schritt 5: Bildressourcenblöcke lesen

image_resources gibt die geparsten ResourceBlock-Einträge des Dokuments zurück. Jeder Block stellt id, name und size bereit:

for resource in image.image_resources:
    print(f"Resource {resource.id} \"{resource.name}\" - {resource.size} bytes")

image_resources ist in diesem FOSS-Build schreibgeschützt — das Zuweisen führt zu NotSupportedException (siehe Bekannte Einschränkungen im FAQ).


Schritt 6: Dokument speichern

Schreiben Sie das Dokument zurück auf die Festplatte und geben Sie anschließend die Ressourcen des Bildes frei:

image.save("output.psd")
image.dispose()

Häufige Probleme und Lösungen

PsdLoadException beim Laden einer Datei. Die Eingabe ist kein gültiges PSD/PSB-Dokument, oder ihr Header hat die Validierung nicht bestanden. Bestätigen Sie, dass die Datei eine echte PSD/PSB-Datei ist, bevor Sie sie laden.

NotSupportedException beim Setzen image_resources or global_layer_resources. Diese Setter werden in diesem FOSS-Build nicht unterstützt. Behandeln image_resources als schreibgeschützt.

Häufig gestellte Fragen

Kann ich eine PSD-Datei aus einem Stream statt aus einem Dateipfad laden?

Ja — PsdImage.load() akzeptiert entweder einen Dateipfad-String oder einen lesbaren Stream (io.BytesIO/io.BufferedIOBase).

Enthält image_resources Ebenendaten?

Nein. image_resources enthält dokumentenbezogene Ressourcenblöcke (geparst aus dem PSD-Bildressourcenabschnitt). Ebenenbezogene Daten werden über gelesen PsdImage.layers — siehe Arbeiten mit Ebenen.

Ist PsdImage.version die PSD-Dateiformatversion?

Nein. PsdImage.version gibt eine interne, Aspose.PSD-kompatible API-Versionsnummer aus (derzeit 6) — sie ist nicht damit verbunden, ob die geladene Datei PSD oder PSB ist. Sein Setter akzeptiert nur den Wert 6; jeder andere Wert löst ValueError aus.

Siehe auch

 Deutsch