Comment travailler avec le Aspose.PSD FOSS Core API dans Python

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.

Voir aussi

 Français