Come salvare ed esportare documenti PSD in Python
Questa guida mostra come salvare un documento modificato in un percorso file, in uno stream aperto e come eliminare un’immagine caricata in seguito. PsdImage.save è l’unico punto di ingresso pubblico per scrivere nuovamente un documento — accetta sia un percorso file sia uno stream scrivibile già aperto. Il writer di sezione a basso livello che effettua la codifica dei byte è un dettaglio di implementazione interno, 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:$PYTHONPATHPasso 2: Importa le classi richieste
PsdImage è l’unica classe di cui hanno bisogno gli esempi di questa guida:
from aspose_psd_foss.psdimage import PsdImagePasso 3: Salva su un percorso file
Carica un documento, apporta una modifica, quindi salvalo nuovamente su un percorso file:
image = PsdImage.load("input.psd")
image.layers[0].is_visible = False
image.save("output.psd")Passo 4: Salva su uno stream aperto
Passare uno stream invece di un percorso lascia lo stream aperto dopo il salvataggio — tu controlli quando chiuderlo:
with open("output.psd", "wb") as stream:
image.save(stream)Passo 5: Dispose l’Image
Rilascia le risorse che il PsdImage caricato detiene una volta terminato:
image.dispose()Problemi comuni e soluzioni
RuntimeError: PsdImage has been disposed. quando si chiama save. L’immagine è già stata eliminata (tramite dispose() o un with blocco uscito) prima save è stato chiamato. Chiama save prima di eliminare.
PsdSaveException riguardo alla lunghezza di una stringa Pascal. Un valore di stringa supera i 255 byte — vedi Gestione delle eccezioni del Core PSD and Troubleshooting.
Impossibile forzare un contenitore PSD o PSB durante il salvataggio. Non esiste alcun API pubblico per scegliere il formato del contenitore di output — un salvataggio rispecchia sempre il formato (is_large_document / is_psb) con cui è stato caricato il documento. Se ti serve un formato di contenitore diverso, non esiste un percorso di conversione supportato in questa build FOSS.
Domande Frequenti
Il salvataggio su uno stream chiude lo stream successivamente?
No — quando passi uno stream a save, lo stream rimane aperto successivamente così controlli il suo ciclo di vita (vedi Passo 4). Il salvataggio su un percorso file, al contrario, apre e chiude il file internamente.
Posso chiamare direttamente lo scrittore di sezione interno invece di save?
No — lo scrittore a livello di sezione è un dettaglio di implementazione interno invocato da PsdImage.save. Non esiste un modo documentato e supportato per scrivere un documento al di fuori della chiamata a save su un’istanza PsdImage.