Come caricare un documento PSD in Python

Come caricare un documento PSD in Python

PsdImage.load è il unico punto di ingresso pubblico per aprire un documento PSD/PSB — accetta sia un percorso file sia un flusso leggibile già aperto. Il lettore a basso livello, sezione per sezione, a cui delega internamente non è qualcosa che si chiama direttamente.

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

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

Passo 3: Carica da un percorso file

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

Passo 4: Carica da uno stream

Uno stream non deve essere ricercabile — load legge tutto il suo contenuto in un buffer interno prima dell’analisi:

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

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

Problemi comuni e soluzioni

FileNotFoundError: File not found: .... Il percorso passato a load non punta a un file esistente — load checks os.path.isfile prima di tentare di aprirlo.

PsdLoadException: Unexpected end of PSD/PSB data while reading the file structure. Il flusso di origine ha terminato i dati a metà dell’analisi (un EOFError durante la lettura) — il file è probabilmente troncato.

PsdLoadException: Failed to read PSD/PSB data from the source stream. Si è verificato un errore I/O durante la lettura dal flusso stesso, incapsulato e rilanciato come un PsdLoadException.

ArgumentNullException quando si chiama load. load è stato chiamato con None come argomento stream.

Domande frequenti

Devo riportare lo stream all’inizio prima di chiamare load?

No — se lo stream è ricercabile, load ripristina la sua posizione originale dopo la lettura; se non è ricercabile, load funziona comunque poiché memorizza internamente i contenuti dello stream prima dell’analisi.

Qual è la differenza tra i due FileNotFoundError/PsdLoadException sopra?

Un percorso di file mancante solleva lo standard FileNotFoundError prima che inizi l’analisi. Un PsdLoadException invece significa che un file (o stream) è stato trovato e aperto, ma i dati PSD/PSB stessi sono troncati, corrotti o comunque illeggibili una volta iniziata l’analisi — vedi anche Troubleshooting per gli aspetti relativi a versione e confine PsdLoadException varianti.

Vedi anche

 Italiano