Πώς να εργαστείτε με το Aspose.PSD FOSS Core API στο Python
Aspose.PSD FOSS για Python φορτώνει και επιθεωρεί τη δομή του εγγράφου PSD/PSB μέσω του PsdImage, μια υποκατηγορία του Image. Αυτό το άρθρο καλύπτει τη φόρτωση ενός εγγράφου, την ανάγνωση της κεφαλίδας και των πόρων εικόνας, και την αποθήκευσή του ξανά στο δίσκο.
Οδηγός βήμα προς βήμα
Βήμα 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: Φορτώστε ένα PSD/PSB Έγγραφο
PsdImage.load() ανοίγει ένα έγγραφο από διαδρομή αρχείου ή ροή:
from aspose_psd_foss.psdimage import PsdImage
image = PsdImage.load("input.psd")Βήμα 4: Εξετάστε την κεφαλίδα του εγγράφου
PsdImage εκθέτει πεδία κεφαλίδας που διαβάζονται από το αναλυθέν έγγραφο: width, height, bits_per_channel, color_mode (μια τιμή ColorModes), και compression (μια τιμή CompressionMethod):
print(f"{image.width}x{image.height}, {image.bits_per_channel} bpc")
print(f"Color mode: {image.color_mode}") # e.g. ColorModes.RGB
print(f"Compression: {image.compression}") # e.g. CompressionMethod.RLE
print(f"Flattened: {image.is_flatten}")Οι τιμές ColorModes είναι BITMAP, GRAYSCALE, INDEXED, RGB, CMYK, MULTICHANNEL, DUOTONE και LAB. Οι τιμές CompressionMethod είναι RAW, RLE, ZIP_WITHOUT_PREDICTION και ZIP_WITH_PREDICTION.
Βήμα 5: Διαβάστε τα Μπλοκ Πόρων Εικόνας
image_resources επιστρέφει τις αναλυμένες καταχωρίσεις ResourceBlock του εγγράφου. Κάθε μπλοκ εκθέτει id, name και size:
for resource in image.image_resources:
print(f"Resource {resource.id} \"{resource.name}\" - {resource.size} bytes")image_resources είναι μόνο για ανάγνωση σε αυτήν την έκδοση FOSS — η ανάθεση σε αυτό προκαλεί NotSupportedException (δείτε τους γνωστούς περιορισμούς στο FAQ).
Βήμα 6: Αποθήκευση του Εγγράφου
Γράψτε το έγγραφο πίσω στο δίσκο, έπειτα απελευθερώστε τους πόρους της εικόνας:
image.save("output.psd")
image.dispose()Συνηθισμένα Προβλήματα και Διορθώσεις
PsdLoadException κατά τη φόρτωση ενός αρχείου. Η είσοδος δεν είναι έγγραφο PSD/PSB έγκυρο, ή η κεφαλίδα του απέτυχε στην επικύρωση. Επιβεβαιώστε ότι το αρχείο είναι αληθινό αρχείο PSD/PSB πριν το φορτώσετε.
NotSupportedException κατά τη ρύθμιση image_resources or global_layer_resources. Αυτοί οι setters δεν υποστηρίζονται σε αυτήν την έκδοση FOSS. Θεωρήστε image_resources ως μόνο για ανάγνωση.
Συχνές Ερωτήσεις
Μπορώ να φορτώσω ένα αρχείο PSD από μια ροή αντί για διαδρομή αρχείου;
Ναι — PsdImage.load() δέχεται είτε μια συμβολοσειρά διαδρομής αρχείου είτε ένα ρεύμα ανάγνωσης (io.BytesIO/io.BufferedIOBase).
Το image_resources περιλαμβάνει δεδομένα στρώσης;
Όχι. image_resources κρατά μπλοκ πόρων επιπέδου εγγράφου (αναλύονται από την ενότητα πόρων εικόνας PSD). Τα δεδομένα επιπέδου στρώματος διαβάζονται μέσω PsdImage.layers — δείτε Εργασία με Στρώματα.
Το PsdImage.version είναι η έκδοση μορφής αρχείου PSD;
Όχι. Το PsdImage.version αναφέρει έναν εσωτερικό αριθμό έκδοσης API συμβατό με Aspose.PSD (προς το παρόν 6) — δεν σχετίζεται με το αν το φορτωμένο αρχείο είναι PSD ή PSB. Ο καθοριστής του δέχεται μόνο την τιμή 6; οποιαδήποτε άλλη τιμή προκαλεί ValueError.