Come lavorare con il Aspose.PSD FOSS Core API in Python

Come lavorare con il Aspose.PSD FOSS Core API in Python

Aspose.PSD FOSS per Python carica e ispeziona la struttura del documento PSD/PSB tramite PsdImage, una sottoclasse di Image. Questo articolo copre il caricamento di un documento, la lettura dell’intestazione e delle risorse immagine, e il salvataggio su disco.

Guida passo-passo

Passo 1: Installa il pacchetto

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

Passo 2: Importa le classi richieste

PsdImage è il punto di ingresso utilizzato in tutta questa guida:

from aspose_psd_foss.psdimage import PsdImage

Passo 3: Carica un documento PSD/PSB

PsdImage.load() apre un documento da un percorso file o da un flusso:

from aspose_psd_foss.psdimage import PsdImage

image = PsdImage.load("input.psd")

Passo 4: Ispeziona l’intestazione del documento

PsdImage espone i campi dell’intestazione letti dal documento analizzato: width, height, bits_per_channel, color_mode (un valore ColorModes), e compression (un valore 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}")

I valori ColorModes sono BITMAP, GRAYSCALE, INDEXED, RGB, CMYK, MULTICHANNEL, DUOTONE e LAB. I valori CompressionMethod sono RAW, RLE, ZIP_WITHOUT_PREDICTION e ZIP_WITH_PREDICTION.


Passo 5: Leggi i blocchi di risorse immagine

image_resources restituisce le voci ResourceBlock analizzate del documento. Ogni blocco espone id, name e size:

for resource in image.image_resources:
    print(f"Resource {resource.id} \"{resource.name}\" - {resource.size} bytes")

image_resources è di sola lettura in questa build FOSS — assegnarvi genera NotSupportedException (vedi Limitazioni note nella FAQ).


Passo 6: Salva il documento

Scrivi nuovamente il documento su disco, quindi rilascia le risorse dell’immagine:

image.save("output.psd")
image.dispose()

Problemi comuni e soluzioni

PsdLoadException quando si carica un file. L’input non è un documento PSD/PSB valido, o la sua intestazione non ha superato la convalida. Conferma che il file sia un autentico file PSD/PSB prima di caricarlo.

NotSupportedException quando si imposta image_resources or global_layer_resources. Questi setter non sono supportati in questa build FOSS. Tratta image_resources come di sola lettura.

Domande frequenti

Posso caricare un file PSD da uno stream anziché da un percorso file?

Sì — PsdImage.load() accetta sia una stringa di percorso file sia un flusso leggibile (io.BytesIO/io.BufferedIOBase).

Il image_resources include i dati dei livelli?

No. image_resources contiene blocchi di risorse a livello di documento (analizzati dalla sezione delle risorse immagine PSD). I dati a livello di livello sono letti tramite PsdImage.layers — vedi Lavorare con i livelli.

Il PsdImage.version è la versione del formato file PSD?

No. PsdImage.version riporta un numero di versione interno Aspose.PSD-compatibile API (attualmente 6) — non è correlato al fatto che il file caricato sia PSD o PSB. Il suo setter accetta solo il valore 6; qualsiasi altro valore genera ValueError.

Vedi anche

 Italiano