Πώς να αποθηκεύσετε και να εξάγετε έγγραφα PSD στο Python

Πώς να αποθηκεύσετε και να εξάγετε έγγραφα PSD στο Python

Αυτός ο οδηγός δείχνει πώς να αποθηκεύσετε ένα επεξεργασμένο έγγραφο σε διαδρομή αρχείου, σε ανοιχτό stream, και πώς να απελευθερώσετε μια φορτωμένη εικόνα μετά. PsdImage.save είναι το μοναδικό δημόσιο σημείο εισόδου για την εγγραφή ενός εγγράφου — δέχεται είτε διαδρομή αρχείου είτε ήδη ανοιγμένο writable stream. Ο χαμηλού επιπέδου section writer που κάνει την πραγματική κωδικοποίηση των byte είναι εσωτερική λεπτομέρεια υλοποίησης, όχι κάτι που καλείτε άμεσα.

Οδηγός βήμα-βήμα

Βήμα 1: Εγκατάσταση του πακέτου

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

Βήμα 2: Εισαγωγή των απαιτούμενων κλάσεων

PsdImage είναι η μόνη κλάση που χρειάζονται τα παραδείγματα αυτού του οδηγού:

from aspose_psd_foss.psdimage import PsdImage

Βήμα 3: Αποθήκευση σε διαδρομή αρχείου

Φορτώστε ένα έγγραφο, κάντε μια επεξεργασία, και στη συνέχεια αποθηκεύστε το ξανά σε διαδρομή αρχείου:

image = PsdImage.load("input.psd")
image.layers[0].is_visible = False
image.save("output.psd")

Βήμα 4: Αποθήκευση σε ανοιχτή ροή

Η μεταβίβαση μιας ροής αντί για διαδρομή αφήνει τη ροή ανοιχτή μετά την αποθήκευση — εσείς ελέγχετε πότε θα την κλείσετε:

with open("output.psd", "wb") as stream:
    image.save(stream)

Βήμα 5: Αποδεσμεύστε την εικόνα

Απελευθερώστε τους πόρους που κρατά το φορτωμένο PsdImage όταν τελειώσετε με αυτό:

image.dispose()

Κοινά προβλήματα και διορθώσεις

RuntimeError: PsdImage has been disposed. όταν καλείται save. Η εικόνα είχε ήδη απορριφθεί (μέσω dispose() ή ένα with μπλοκ που έφυγε) πριν save κλήθηκε. Καλέστε save πριν την απόρριψη.

PsdSaveException σχετικά με το μήκος μιας συμβολοσειράς Pascal. Μια τιμή συμβολοσειράς υπερβαίνει τα 255 bytes — δείτε Διαχείριση Εξαιρέσεων PSD Core and Troubleshooting.

Δεν υπάρχει τρόπος να εξαναγκάσετε ένα κοντέινερ PSD ή PSB κατά την αποθήκευση. Δεν υπάρχει δημόσια API για την επιλογή της μορφής του εξαγόμενου κοντέινερ — η αποθήκευση πάντα αντικατοπτρίζει τη μορφή με την οποία (is_large_document / is_psb) το έγγραφο φορτώθηκε. Εάν χρειάζεστε διαφορετική μορφή κοντέινερ, δεν υπάρχει υποστηριζόμενη διαδρομή μετατροπής σε αυτήν την έκδοση FOSS.

Συχνές Ερωτήσεις

Η αποθήκευση σε ροή κλείνει τη ροή μετά;

Όχι — όταν περνάτε μια ροή στο save, η ροή παραμένει ανοιχτή μετά, ώστε να ελέγχετε τον κύκλο ζωής της (δείτε το Βήμα 4). Αντίθετα, η αποθήκευση σε διαδρομή αρχείου ανοίγει και κλείνει το αρχείο εσωτερικά.

Μπορώ να καλέσω απευθείας τον εσωτερικό συγγραφέα τμημάτων αντί για το save;

Όχι — ο συγγραφέας επιπέδου τμήματος είναι ένα εσωτερικό στοιχείο υλοποίησης που κληθεί από το PsdImage.save. Δεν υπάρχει τεκμηριωμένος, υποστηριζόμενος τρόπος να γράψετε ένα έγγραφο εκτός της κλήσης του save σε μια παρουσία PsdImage.

Δείτε επίσης

 Ελληνικά