Wie man ein PSD-Dokument in Python lädt
PsdImage.load ist der einzige öffentliche Einstiegspunkt zum Öffnen eines PSD/PSB-Dokuments — es akzeptiert entweder einen Dateipfad oder einen bereits geöffneten lesbaren Stream. Der low-level section-by-section-Reader, an den es intern delegiert, ist nichts, das Sie direkt aufrufen.
Schritt-für-Schritt-Anleitung
Schritt 1: Installieren Sie das Paket
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: Importieren Sie die erforderlichen Klassen
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadExceptionSchritt 3: Laden Sie aus einem Dateipfad
image = PsdImage.load("input.psd")
print(f"Loaded: {image.width}x{image.height}")
image.dispose()Schritt 4: Laden aus einem Stream
Ein Stream muss nicht seekbar sein — load liest seinen gesamten Inhalt in einen internen Puffer, bevor er geparst wird:
with open("input.psd", "rb") as stream:
image = PsdImage.load(stream)
print(f"Loaded from stream: {image.width}x{image.height}")
image.dispose()Häufige Probleme und Lösungen
FileNotFoundError: File not found: .... Der übergebene Pfad zu load zeigt nicht auf eine bestehende Datei — load checks os.path.isfile bevor versucht wird, sie zu öffnen.
PsdLoadException: Unexpected end of PSD/PSB data while reading the file structure. Der Quell-Stream lief während der Analyse mitten im Parsen (ein EOFError beim Lesen) — die Datei ist vermutlich abgeschnitten.
PsdLoadException: Failed to read PSD/PSB data from the source stream. Ein I/O-Fehler trat beim Lesen aus dem Stream selbst auf, wurde eingekapselt und erneut ausgelöst als ein PsdLoadException.
ArgumentNullException beim Aufruf von load. load wurde aufgerufen mit None als das Stream-Argument.
Häufig gestellte Fragen
Muss ich einen Stream wieder an den Anfang zurückspulen, bevor ich load aufrufe?
Nein — wenn der Stream suchbar ist, stellt load seine ursprüngliche Position nach dem Lesen wieder her; ist er nicht suchbar, funktioniert load dennoch, da er den Inhalt des Streams intern puffert, bevor er geparst wird.
Was ist der Unterschied zwischen den beiden oben genannten FileNotFoundError/PsdLoadException-Fehlern?
Ein fehlender Dateipfad löst den Standard aus FileNotFoundError bevor irgendeine Analyse beginnt. A PsdLoadException bedeutet stattdessen, dass eine Datei (oder ein Stream) gefunden und geöffnet wurde, aber die PSD/PSB-Daten selbst abgeschnitten, beschädigt oder anderweitig unlesbar sind, sobald die Analyse begann — siehe auch Troubleshooting für die versions- und grenzwertbezogenen PsdLoadException Varianten.