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:$PYTHONPATHSchritt 2: Erforderliche Klassen importieren
PsdImage ist der Einstiegspunkt, der in diesem Leitfaden durchgängig verwendet wird:
from aspose_psd_foss.psdimage import PsdImageSchritt 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.