Jak načíst PSD dokument v Python
PsdImage.load je jediný veřejný vstupní bod pro otevření dokumentu PSD/PSB — přijímá buď cestu k souboru, nebo již otevřený čitelný stream. Nízkou úrovňovou čtečku sekce po sekci, na kterou interně deleguje, není něco, co byste volali přímo.
Průvodce krok za krokem
Krok 1: Nainstalujte balíček
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:$PYTHONPATHKrok 2: Importujte požadované třídy
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadExceptionKrok 3: Načtěte z cesty k souboru
image = PsdImage.load("input.psd")
print(f"Loaded: {image.width}x{image.height}")
image.dispose()Krok 4: Načíst ze streamu
Stream nemusí být posouvatelný — load načte celý jeho obsah do vnitřního bufferu před parsováním:
with open("input.psd", "rb") as stream:
image = PsdImage.load(stream)
print(f"Loaded from stream: {image.width}x{image.height}")
image.dispose()Běžné problémy a opravy
FileNotFoundError: File not found: .... Cesta předaná do load neukazuje na existující soubor — load checks os.path.isfile před tím, než se ji pokusí otevřít.
PsdLoadException: Unexpected end of PSD/PSB data while reading the file structure. Zdrojový stream vyčerpal data uprostřed parsování (an EOFError během čtení) — soubor je pravděpodobně oříznutý.
PsdLoadException: Failed to read PSD/PSB data from the source stream. Došlo k I/O chybě při čtení ze samotného streamu, byla zabalena a znovu vyhozena jako PsdLoadException.
ArgumentNullException při volání load. load bylo voláno s None jako argument streamu.
Často kladené otázky
Musím posunout proud zpět na jeho začátek před voláním load?
Ne— pokud je proud posunovatelný, load obnoví jeho původní pozici po přečtení; pokud není posunovatelný, load stále funguje, protože interně bufferuje obsah proudu před analýzou.
Jaký je rozdíl mezi výše uvedenými dvěma selháními FileNotFoundError/PsdLoadException?
Chybějící cesta k souboru vyvolá standardní FileNotFoundError před zahájením jakéhokoli parsování. A PsdLoadException naopak to znamená, že soubor (nebo stream) byl nalezen a otevřen, ale data PSD/PSB jsou oříznutá, poškozená nebo jinak nečitelné, jakmile parsování začalo — viz také Troubleshooting pro verze a související s hranicemi PsdLoadException varianty.