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.