Comment travailler avec le Aspose.PSD FOSS Core API dans Python
Aspose.PSD FOSS pour Python charge et inspecte la structure du document PSD/PSB via PsdImage, une sous-classe de Image. Cet article couvre le chargement d’un document, la lecture de son en-tête et de ses ressources d’image, et son enregistrement sur le disque.
Guide étape par étape
Étape 1: Installer le paquet
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 le point d’entrée utilisé tout au long de ce guide :
from aspose_psd_foss.psdimage import PsdImageÉtape 3: charger un document PSD/PSB
PsdImage.load() ouvre un document à partir d’un chemin de fichier ou d’un flux:
from aspose_psd_foss.psdimage import PsdImage
image = PsdImage.load("input.psd")Étape 4: inspecter l’en-tête du document
PsdImage expose les champs d’en-tête lus à partir du document analysé: width, height, bits_per_channel, color_mode (une valeur ColorModes), et compression (une valeur CompressionMethod):
print(f"{image.width}x{image.height}, {image.bits_per_channel} bpc")
print(f"Color mode: {image.color_mode}") # e.g. ColorModes.RGB
print(f"Compression: {image.compression}") # e.g. CompressionMethod.RLE
print(f"Flattened: {image.is_flatten}")Les valeurs ColorModes sont BITMAP, GRAYSCALE, INDEXED, RGB, CMYK, MULTICHANNEL, DUOTONE et LAB. Les valeurs CompressionMethod sont RAW, RLE, ZIP_WITHOUT_PREDICTION et ZIP_WITH_PREDICTION.
Étape 5: lire les blocs de ressources d’image
image_resources renvoie les entrées ResourceBlock analysées du document. Chaque bloc expose id, name et size:
for resource in image.image_resources:
print(f"Resource {resource.id} \"{resource.name}\" - {resource.size} bytes")image_resources est en lecture seule dans cette version FOSS — l’affectation à celle-ci déclenche NotSupportedException (voir les Limitations connues dans le FAQ).
Étape 6: Enregistrer le document
Écrivez le document à nouveau sur le disque, puis libérez les ressources de l’image:
image.save("output.psd")
image.dispose()Problèmes courants et correctifs
PsdLoadException lors du chargement d’un fichier. L’entrée n’est pas un document PSD/PSB valide, ou son en-tête a échoué à la validation. Confirmez que le fichier est un vrai fichier PSD/PSB avant de le charger.
NotSupportedException lors de la mise en place image_resources or global_layer_resources. Ces mutateurs ne sont pas pris en charge dans cette version FOSS. Traitez image_resources comme lecture seule.
Questions fréquemment posées
Puis-je charger un fichier PSD depuis un flux au lieu d’un chemin de fichier?
Oui — PsdImage.load() accepte soit une chaîne de chemin de fichier, soit un flux lisible (io.BytesIO/io.BufferedIOBase).
Le image_resources inclut-il les données de calque?
Non. image_resources contient des blocs de ressources au niveau du document (analysés à partir de la section des ressources d’image PSD). Les données au niveau du calque sont lues via PsdImage.layers — voir Travailler avec les calques.
Le PsdImage.version est-il la version du format de fichier PSD?
Non. PsdImage.version indique un numéro de version interne compatible Aspose.PSD API (actuellement 6) — il n’est pas lié au fait que le fichier chargé soit PSD ou PSB. Son mutateur n’accepte que la valeur 6; toute autre valeur déclenche ValueError.