Comment enregistrer et exporter des documents PSD dans Python
Ce guide montre comment enregistrer un document modifié vers un chemin de fichier, vers un flux ouvert, et comment libérer une image chargée par la suite. PsdImage.save est le seul point d’entrée public pour écrire à nouveau un document — il accepte soit un chemin de fichier, soit un flux déjà ouvert en écriture. L’écrivain de section bas-niveau qui effectue le codage réel des octets est un détail d’implémentation interne, pas quelque chose que vous appelez directement.
Guide étape par étape
Étape 1: Installer le package
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Étape 2: Importer les classes requises
PsdImage est la seule classe dont les exemples de ce guide ont besoin:
from aspose_psd_foss.psdimage import PsdImageÉtape 3 : Enregistrer vers un chemin de fichier
Chargez un document, apportez une modification, puis enregistrez-le à nouveau sur un chemin de fichier :
image = PsdImage.load("input.psd")
image.layers[0].is_visible = False
image.save("output.psd")Étape 4 : Enregistrer vers un flux ouvert
Passer un flux au lieu d’un chemin laisse le flux ouvert après l’enregistrement — vous contrôlez le moment où le fermer :
with open("output.psd", "wb") as stream:
image.save(stream)Étape 5 : Libérer l’image
Libérez les ressources que le PsdImage chargé détient une fois que vous avez fini avec lui :
image.dispose()Problèmes courants et solutions
RuntimeError: PsdImage has been disposed. lors de l’appel save. L’image était déjà libérée (via dispose() ou un with bloc qui a quitté) avant save a été appelé. Appelez save avant de libérer.
PsdSaveException concernant une longueur de chaîne Pascal. Une valeur de chaîne dépasse 255 octets — voir Gestion des exceptions PSD Core and Troubleshooting.
Aucun moyen d’imposer un conteneur PSD ou PSB lors de l’enregistrement. Il n’existe aucun API public pour choisir le format du conteneur de sortie — un enregistrement reflète toujours le format avec lequel le document a été chargé (is_large_document / is_psb) le document a été chargé. Si vous avez besoin d’un format de conteneur différent, aucun chemin de conversion pris en charge n’existe dans cette version FOSS.
Foire aux questions
L’enregistrement vers un flux ferme-t-il le flux par la suite?
Non — lorsque vous transmettez un flux à save, le flux reste ouvert par la suite afin que vous en contrôliez le cycle de vie (voir Étape 4). En revanche, l’enregistrement vers un chemin de fichier ouvre et ferme le fichier en interne.
Puis-je appeler directement l’écrivain de section interne au lieu de save?
Non — l’écrivain de niveau section est un détail d’implémentation interne invoqué par PsdImage.save. Il n’existe aucune méthode documentée et prise en charge pour écrire un document sans appeler save sur une instance de PsdImage.