Cum să salvați și să exportați documente PSD în Python
Acest ghid arată cum să salvați un document editat într-o cale de fișier, într-un flux deschis și cum să eliberați o imagine încărcată ulterior. PsdImage.save este singurul punct de intrare public pentru scrierea unui document înapoi — acceptă fie o cale de fișier, fie un flux deja deschis și scriabil. Scriitorul de secțiuni de nivel jos care efectuează codarea efectivă a octeților este un detaliu de implementare intern, nu ceva ce apelați direct.
Ghid pas cu pas
Pasul 1: Instalați pachetul
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:$PYTHONPATHPasul 2: Importați clasele necesare
PsdImage este singura clasă de care au nevoie exemplele din acest ghid:
from aspose_psd_foss.psdimage import PsdImagePasul 3: Salvează într-o cale de fișier
Încarcă un document, fă o editare, apoi salvează-l înapoi la o cale de fișier:
image = PsdImage.load("input.psd")
image.layers[0].is_visible = False
image.save("output.psd")Pasul 4: Salvează într-un flux deschis
Transmiterea unui flux în loc de o cale lasă fluxul deschis după salvare — tu controlezi când să-l închizi:
with open("output.psd", "wb") as stream:
image.save(stream)Pasul 5: Eliberează imaginea
Eliberează resursele pe care le deține PsdImage încărcat odată ce ai terminat cu el:
image.dispose()Probleme comune și remedii
RuntimeError: PsdImage has been disposed. când se apelează save. Imaginea a fost deja eliberată (prin dispose() sau un with bloc care a ieșit) înainte save a fost apelat. Apelă save înainte de eliberare.
PsdSaveException despre lungimea unui șir Pascal. O valoare de șir depășește 255 de octeți — vezi Gestionarea excepțiilor PSD Core and Troubleshooting.
Nu există nicio modalitate de a forța un container PSD sau PSB la salvare. Nu există niciun API public pentru a alege formatul containerului de ieșire — o salvare reflectă întotdeauna formatul cu care a fost încărcat (is_large_document / is_psb) documentul a fost încărcat. Dacă aveți nevoie de un alt format de container, nu există o cale de conversie suportată în această construcție FOSS.
Întrebări frecvente
Salvează într-un flux închide fluxul ulterior?
Nu — când transmiteți un flux către save, fluxul rămâne deschis ulterior, astfel încât controlați ciclul său de viață (vezi Pasul 4). Salvarea către o cale de fișier, în schimb, deschide și închide fișierul intern.
Pot apela direct scriitorul de secțiune intern în loc de save?
Nu — scriitorul la nivel de secțiune este un detaliu de implementare intern invocat de PsdImage.save. Nu există o modalitate documentată și suportată de a scrie un document în afara apelării lui save pe o instanță PsdImage.