Comment charger un document PSD dans Python

Comment charger un document PSD dans Python

PsdImage.load est le point d’entrée public unique pour ouvrir un document PSD/PSB — il accepte soit un chemin de fichier, soit un flux lisible déjà ouvert. Le lecteur bas-niveau section par section auquel il délègue en interne n’est 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

from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadException

Étape 3: Charger depuis un chemin de fichier

image = PsdImage.load("input.psd")
print(f"Loaded: {image.width}x{image.height}")
image.dispose()

Étape 4 : Charger depuis un flux

Un flux n’a pas besoin d’être seekable — load lit son contenu complet dans un tampon interne avant l’analyse :

with open("input.psd", "rb") as stream:
    image = PsdImage.load(stream)

print(f"Loaded from stream: {image.width}x{image.height}")
image.dispose()

Problèmes courants et correctifs

FileNotFoundError: File not found: .... Le chemin passé à load ne pointe pas vers un fichier existant — load checks os.path.isfile avant d’essayer de l’ouvrir.

PsdLoadException: Unexpected end of PSD/PSB data while reading the file structure. Le flux source a manqué de données en cours d’analyse (un EOFError pendant la lecture) — le fichier est probablement tronqué.

PsdLoadException: Failed to read PSD/PSB data from the source stream. Une erreur d’E/S s’est produite lors de la lecture du flux lui-même, encapsulée et relancée sous forme de PsdLoadException.

ArgumentNullException lors de l’appel de load. load a été appelé avec None en tant qu’argument du flux.

Foire aux questions

Dois-je remettre le flux à son début avant d’appeler load?

Non — si le flux est positionnable, load restaure sa position d’origine après la lecture; s’il ne l’est pas, load fonctionne toujours car il met en mémoire tampon le contenu du flux en interne avant l’analyse.

Quelle est la différence entre les deux échecs FileNotFoundError/PsdLoadException ci-dessus?

Un chemin de fichier manquant déclenche la norme FileNotFoundError avant que tout parsing ne commence. Un PsdLoadException signifie plutôt qu’un fichier (ou flux) a été trouvé et ouvert, mais les données PSD/PSB elles-mêmes sont tronquées, corrompues, ou autrement illisibles une fois le parsing démarré — voir aussi Troubleshooting pour les aspects liés aux versions et aux limites PsdLoadException variantes.

Voir aussi

 Français