Πώς να φορτώσετε ένα έγγραφο PSD στο Python
PsdImage.load είναι το μοναδικό δημόσιο σημείο εισόδου για το άνοιγμα ενός εγγράφου PSD/PSB — δέχεται είτε διαδρομή αρχείου είτε ήδη ανοιχτό αναγνώσιμο ρεύμα. Ο χαμηλού επιπέδου αναγνώστης τμήμα-προς-τμήμα που αναθέτει εσωτερικά δεν είναι κάτι που καλείτε άμεσα.
Οδηγός βήμα προς βήμα
Βήμα 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: Εισαγωγή των απαιτούμενων κλάσεων
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadExceptionΒήμα 3: Φόρτωση από διαδρομή αρχείου
image = PsdImage.load("input.psd")
print(f"Loaded: {image.width}x{image.height}")
image.dispose()Βήμα 4: Φόρτωση από ροή
Μια ροή δεν χρειάζεται να είναι αναζητήσιμη — load διαβάζει όλο το περιεχόμενό της σε εσωτερική ενδιάμεση μνήμη πριν από την ανάλυση:
with open("input.psd", "rb") as stream:
image = PsdImage.load(stream)
print(f"Loaded from stream: {image.width}x{image.height}")
image.dispose()Συνηθισμένα προβλήματα και διορθώσεις
FileNotFoundError: File not found: .... Η διαδρομή που περάστηκε στο load δεν δείχνει σε υπάρχον αρχείο — load checks os.path.isfile πριν προσπαθήσετε να το ανοίξετε.
PsdLoadException: Unexpected end of PSD/PSB data while reading the file structure. Η πηγή ροής εξαντλήθηκε από δεδομένα κατά τη διάρκεια της ανάλυσης (μια EOFError κατά την ανάγνωση) — το αρχείο πιθανότατα είναι κομμένο.
PsdLoadException: Failed to read PSD/PSB data from the source stream. Συνέβη σφάλμα I/O κατά την ανάγνωση από την ίδια τη ροή, τυλίχθηκε και επαναεγερθήκε ως ένα PsdLoadException.
ArgumentNullException κατά την κλήση load. load κλήθηκε με None ως το όρισμα ροής.
Συχνές Ερωτήσεις
Πρέπει να κάνω seek της ροής πίσω στην αρχή της πριν καλέσω το load;
Όχι — αν η ροή είναι seekable, το load επαναφέρει την αρχική της θέση μετά την ανάγνωση· αν δεν είναι seekable, το load λειτουργεί ακόμη επειδή αποθηκεύει προσωρινά τα περιεχόμενα της ροής εσωτερικά πριν την ανάλυση.
Ποια είναι η διαφορά μεταξύ των δύο αποτυχιών FileNotFoundError/PsdLoadException παραπάνω;
Ένα ελλιπές μονοπάτι αρχείου προκαλεί το πρότυπο FileNotFoundError πριν αρχίσει οποιαδήποτε ανάλυση. A PsdLoadException αντίθετα σημαίνει ότι βρέθηκε και ανοίχθηκε ένα αρχείο (ή ροή), αλλά τα δεδομένα PSD/PSB είναι αποκομμένα, κατεστραμμένα ή άλλως μη αναγνώσιμα μόλις ξεκίνησε η ανάλυση — δείτε επίσης Troubleshooting για τις σχετικές με την έκδοση και τα όρια PsdLoadException παραλλαγές.