Εισαγωγή
Aspose.PSD FOSS για Python φορτώνει, ελέγχει και αποθηκεύει έγγραφα PSD και PSB μέσω ενός μικρού συνόλου κλάσεων. Αυτή η ανάρτηση εξετάζει τμήματα του πυρήνα API που η εισαγωγική ανάρτηση δεν κάλυψε σε βάθος: πώς το Image και το PsdImage σχετίζονται μεταξύ τους, οι τύποι τιμών γεωμετρίας που χρησιμοποιούνται σε όλη τη βιβλιοθήκη, και πώς η βιβλιοθήκη αναφέρει σφάλματα φόρτωσης και αποθήκευσης.
Τι περιλαμβάνεται
Εικόνα και PsdImage
Image είναι μια ελάχιστη αφηρημένη βασική κλάση: ορίζει μόνο το load(), το οποίο ελέγχει την είσοδο και επιστρέφει μια συγκεκριμένη υποκλάση — για είσοδο PSD/PSB, αυτή η υποκλάση είναι το PsdImage. Η πλήρης επιφάνεια του εγγράφου — color_mode, version, layers, compression, bits_per_channel, size και άλλα — βρίσκεται στο ίδιο το PsdImage, όχι στη βάση Image.
from aspose_psd_foss.image import Image
from aspose_psd_foss.psdimage import PsdImage
with Image.load("input.psd") as image:
assert isinstance(image, PsdImage)
print(f"ColorMode: {image.color_mode}, Version: {image.version}")
print(f"Size: {image.size}, Layers: {image.layer_count}")
Τύποι Τιμών Γεωμετρίας
Point, Size, Rectangle και RectangleF είναι οι τύποι τιμών που χρησιμοποιούνται για συντεταγμένες και διαστάσεις σε όλο το API — το Layer.bounds είναι ένα Rectangle, και το PsdImage.size είναι ένα Size. Το Rectangle περιλαμβάνει πραγματικές μεθόδους γεωμετρίας: contains(), intersect_rect(), union_rect(), inflate() και from_left_top_right_bottom(), μεταξύ άλλων.
from aspose_psd_foss.rectangle import Rectangle
layer_bounds = image.layers[0].bounds
fully_inside = layer_bounds.contains(Rectangle(0, 0, 10, 10))
overlap = Rectangle.intersect_rect(layer_bounds, Rectangle(0, 0, 100, 100))
print(f"Contains (0,0,10,10): {fully_inside}, overlap: {overlap}")
Μπλοκ Πόρων και Εξαιρέσεις
PsdImage.image_resources επιστρέφει τη διασυνταγμένη λίστα των αντικειμένων ResourceBlock — το καθένα εκθέτει τα id, name, data_size και signature. Σε αυτήν την έκδοση FOSS, τα image_resources, global_layer_resources, active_layer και has_transparency_data μπορούν να διαβαστούν αλλά όχι να επανεκχωρηθούν — το καθένα έχει έναν setter που εγείρει το NotSupportedException εάν κληθεί, οπότε αντιμετωπίστε τα ως μόνο για ανάγνωση παρόλο που εμφανίζονται ως συνηθισμένες ιδιότητες.
Τα σφάλματα φόρτωσης και αποθήκευσης εμφανίζονται ως δύο ειδικοί τύποι εξαιρέσεων: PsdLoadException όταν ένα έγγραφο δεν μπορεί να αναλυθεί, και PsdSaveException όταν ένα έγγραφο δεν μπορεί να γραφτεί ξανά.
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadException
try:
with PsdImage.load("input.psd") as image:
for resource in image.image_resources:
print(f"Resource {resource.id}: {resource.name} ({resource.data_size} bytes)")
except PsdLoadException as ex:
print(f"Failed to load input.psd: {ex}")
Γρήγορη Εκκίνηση
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:$PYTHONPATHfrom aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.coreexceptions.psdloadexception import PsdLoadException
try:
with PsdImage.load("input.psd") as image:
print(f"Size: {image.size}, ColorMode: {image.color_mode}")
print(f"ImageResources: {image.resource_count}")
except PsdLoadException as ex:
print(f"Load failed: {ex}")
Υποστηριζόμενες Μορφές
| Μορφή | Επέκταση | Ανάγνωση | Εγγραφή |
|---|---|---|---|
| PSD | psd | ✓ | ✓ |
| PSB | psb | ✓ | ✓ |
Ανοιχτός Κώδικας & Άδεια
Aspose.PSD FOSS για Python είναι αδειοδοτημένο υπό την άδεια MIT και μπορεί να χρησιμοποιηθεί σε εμπορικά προϊόντα χωρίς δικαιώματα, χωρίς υδατογράφημα αξιολόγησης ή περιορισμό χρήσης.
Η βιβλιοθήκη δεν έχει καμία εξάρτηση τρίτων εγγενών — μόνο η τυπική βιβλιοθήκη Python απαιτείται κατά το χρόνο εκτέλεσης.