Εισαγωγή

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:$PYTHONPATH
from 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}")

Υποστηριζόμενες Μορφές

ΜορφήΕπέκτασηΑνάγνωσηΕγγραφή
PSDpsd✓✓
PSBpsb✓✓

Ανοιχτός Κώδικας & Άδεια

Aspose.PSD FOSS για Python είναι αδειοδοτημένο υπό την άδεια MIT και μπορεί να χρησιμοποιηθεί σε εμπορικά προϊόντα χωρίς δικαιώματα, χωρίς υδατογράφημα αξιολόγησης ή περιορισμό χρήσης.

Η βιβλιοθήκη δεν έχει καμία εξάρτηση τρίτων εγγενών — μόνο η τυπική βιβλιοθήκη Python απαιτείται κατά το χρόνο εκτέλεσης.


Ξεκινώντας

Σχετικοί Πόροι