Hoe PSD-documenten op te slaan en te exporteren in Python

Hoe PSD-documenten op te slaan en te exporteren in Python

Deze gids laat zien hoe je een bewerkt document opslaat naar een bestandspad, naar een open stream, en hoe je daarna een geladen afbeelding vrijgeeft. PsdImage.save is het enige openbare toegangspunt voor het terugschrijven van een document — het accepteert zowel een bestandspad als een al geopende schrijfbare stream. De low-level sectiewriter die de daadwerkelijke byte-codering uitvoert, is een interne implementatiedetail, geen iets dat je direct aanroept.

Stap-voor-stap gids

Stap 1: Installeer het pakket

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

Stap 2: Importeer vereiste klassen

PsdImage is de enige klasse die de voorbeelden in deze gids nodig hebben:

from aspose_psd_foss.psdimage import PsdImage

Stap 3: Opslaan naar een bestandspad

Laad een document, maak een wijziging, en sla het vervolgens terug op naar een bestandspad:

image = PsdImage.load("input.psd")
image.layers[0].is_visible = False
image.save("output.psd")

Stap 4: Opslaan naar een open stream

Een stream doorgeven in plaats van een pad houdt de stream open na het opslaan — jij bepaalt wanneer je deze sluit:

with open("output.psd", "wb") as stream:
    image.save(stream)

Stap 5: Afbeelding vrijgeven

Maak de bronnen vrij die de geladen PsdImage vasthoudt zodra je klaar bent ermee:

image.dispose()

Veelvoorkomende problemen en oplossingen

RuntimeError: PsdImage has been disposed. bij het aanroepen save. De afbeelding was al verwijderd (via dispose() of een with blok dat is afgesloten) vóór save werd aangeroepen. Roep save voor het verwijderen.

PsdSaveException over een Pascal-tekenreekslengte. Een tekenreekswaarde overschrijdt 255 bytes — zie Afhandelen van PSD Core-excepties and Troubleshooting.

Geen mogelijkheid om bij het opslaan een PSD- of PSB-container af te dwingen. Er is geen publieke API om het uitvoercontainerformaat te kiezen — een opslaan spiegelt altijd het formaat (is_large_document / is_psb) het document is geladen. Als je een ander containerformaat nodig hebt, is er geen ondersteunde conversieroute in deze FOSS-build.

Veelgestelde vragen

Sluit het opslaan naar een stream de stream daarna?

Nee — wanneer je een stream doorgeeft aan save, blijft de stream daarna open zodat jij de levenscyclus beheert (zie Stap 4). Opslaan naar een bestandspad opent en sluit het bestand daarentegen intern.

Kan ik de interne sectieschrijver direct aanroepen in plaats van save?

Nee — de sectieniveau-schrijver is een interne implementatiedetail die wordt aangeroepen door PsdImage.save. Er is geen gedocumenteerde, ondersteunde manier om een document te schrijven buiten het aanroepen van save op een PsdImage-instantie.

Zie ook

 Nederlands