Jak uložit a exportovat PSD dokumenty v Python

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:$PYTHONPATH

Krok 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 PsdImage

Krok 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.

Viz také:

 Čeština