Jak uložit a exportovat PSD dokumenty v Python
Tento průvodce ukazuje, jak uložit upravený dokument na cestu k souboru, do otevřeného proudu a jak po té uvolnit načtený obrázek. PsdImage.save je jediný veřejný vstupní bod pro zápis dokumentu zpět – přijímá buď cestu k souboru, nebo již otevřený zapisovatelný proud. Nízkourovňový zapisovač sekcí, který provádí skutečné kódování bajtů, je interní implementační detail, nikoli 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
PsdImage je jediná třída, kterou příklady v tomto průvodci potřebují:
from aspose_psd_foss.psdimage import PsdImageKrok 3: Uložit do cesty k souboru
Načtěte dokument, proveďte úpravu a poté jej uložte zpět do cesty k souboru:
image = PsdImage.load("input.psd")
image.layers[0].is_visible = False
image.save("output.psd")Krok 4: Uložit do otevřeného streamu
Předání streamu místo cesty ponechá stream po uložení otevřený — vy určujete, kdy jej zavřít:
with open("output.psd", "wb") as stream:
image.save(stream)Krok 5: Uvolnit obrázek
Uvolněte prostředky, které načtený PsdImage drží, jakmile s ním skončíte:
image.dispose()Časté problémy a opravy
RuntimeError: PsdImage has been disposed. při volání save. Obrázek byl již uvolněn (přes dispose() nebo a with blok, který byl ukončen) před save byl volán. Zavolejte save před uvolněním.
PsdSaveException o délce Pascalova řetězce. Hodnota řetězce přesahuje 255 bajtů — viz Zpracování výjimek PSD Core and Troubleshooting.
Nelze vynutit kontejner PSD nebo PSB při ukládání. Neexistuje žádné veřejné API pro výběr výstupního formátu kontejneru — uložení vždy odráží formát, kterým byl dokument načten (is_large_document / is_psb) byl dokument načten. Pokud potřebujete jiný formát kontejneru, neexistuje podpořená cesta konverze v této FOSS verzi.
Často kladené otázky
Uzavře se po uložení do streamu samotný stream?
Ne — když předáte stream do save, stream zůstane po operaci otevřený, takže máte kontrolu nad jeho životním cyklem (viz Krok 4). Ukládání na cestu k souboru naopak otevře a uzavře soubor interně.
Mohu volat interní zapisovač sekcí přímo místo save?
Ne — zapisovač na úrovni sekce je interní implementační detail vyvolávaný PsdImage.save. Neexistuje žádný zdokumentovaný, podporovaný způsob, jak zapisovat dokument mimo volání save na instanci PsdImage.