Εισαγωγή
PsdImage.layers επιστρέφει κάθε στρώμα σε έγγραφο PSD ή PSB ως λίστα από αντικείμενα Layer. Αυτό το άρθρο εξετάζει συγκεκριμένα τι αποκαλύπτει ένα Layer: τη γεωμετρία και την οπτική του κατάσταση, τις απαριθμήσεις λειτουργίας ανάμειξης και σημαίας μάσκας, καθώς και τις κλάσεις μεταδεδομένων που περιγράφουν τα κανάλια, τη μάσκα και τις περιοχές ανάμειξης ενός στρώματος.
Τι Περιλαμβάνεται
Η Κλάση Layer
Κάθε Layer διαθέτει ένα όνομα (name), ένα περιβάλλον Rectangle (bounds, με παράγωγα width/height/top/left/bottom/right), κατάσταση ορατότητας και σύνθεσης (is_visible, opacity, clipping, blend_mode_key), και αριθμό καναλιών (channels_count). Τα name, is_visible, opacity, clipping, blend_mode_key, και τα τέσσερα άκρα των ορίων μπορούν όλα να τροποποιηθούν και να γραφούν ξανά με το PsdImage.save().
from aspose_psd_foss.psdimage import PsdImage
with PsdImage.load("input.psd") as image:
for layer in image.layers:
print(f"{layer.name}: {layer.bounds}, "
f"Visible={layer.is_visible}, Opacity={layer.opacity}, "
f"BlendMode={layer.blend_mode_key}")
Λειτουργίες Ανάμειξης και Σημαίες Μάσκας
blend_mode_key είναι μια τιμή enum BlendMode — η βιβλιοθήκη ορίζει 29 τυπικές λειτουργίες ανάμειξης PSD (NORMAL, MULTIPLY, SCREEN, OVERLAY, DARKEN, LIGHTEN, COLORDODGE, COLORBURN, HARDLIGHT, SOFTLIGHT, DIFFERENCE, EXCLUSION, HUE, SATURATION, COLOR, LUMINOSITY, και άλλα). Ένα ξεχωριστό enum σημαίας LayerMaskFlags (NONE, RELATIVE_TO_LAYER, DISABLED, INVERTED_WHEN_BLENDING, USER_MASK_FROM_RENDERING_OTHER_DATA, USER_OR_VECTOR_MASKS_HAVE_PARAMETERS) περιγράφει τη συμπεριφορά απόδοσης μάσκας όταν ένα στρώμα έχει μία.
Μεταδεδομένα Καναλιού και Μάσκας
Layer.channel_information επιστρέφει μια λίστα από αντικείμενα ChannelInformation που περιγράφουν το ID κάθε καναλιού, τη μέθοδο συμπίεσης και το μήκος σε byte. Layer.layer_mask_data (ένα LayerMaskDataShort όταν υπάρχει) περιγράφει τα όρια και τις σημαίες της μάσκας στρώματος· Layer.layer_blending_ranges_data αποκαλύπτει το σύνθετο και τα εύρη ανά κανάλι για τη μίξη. Και οι τρεις αυτές ιδιότητες είναι μόνο για ανάγνωση σε αυτήν τη FOSS έκδοση — οι setters τους προκαλούν NotSupportedException εάν κληθούν, παρόλο που εμφανίζονται ως κανονικές ιδιότητες.
from aspose_psd_foss.psdimage import PsdImage
with PsdImage.load("input.psd") as image:
layer = image.layers[0]
for channel in layer.channel_information:
print(f"Channel {channel.ChannelID}: {channel.compression_method}, {channel.length} bytes")
if layer.has_mask_data:
mask = layer.layer_mask_data
print(f"Mask bounds: {mask.mask_rectangle}, flags: {mask.flags}")
Γρήγορη Έναρξη
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
with PsdImage.load("input.psd") as image:
visible_layers = [layer for layer in image.layers if layer.is_visible]
for layer in visible_layers:
print(f"{layer.name}: Opacity={layer.opacity}, BlendMode={layer.blend_mode_key}")
Υποστηριζόμενες Μορφές
| Μορφή | Επέκταση | Ανάγνωση | Εγγραφή |
|---|---|---|---|
| PSD | psd | ✓ | ✓ |
| PSB | psb | ✓ | ✓ |
Ανοιχτός Κώδικας & Άδεια Χρήσης
Aspose.PSD FOSS για Python είναι αδειοδοτημένο υπό την άδεια MIT και μπορεί να χρησιμοποιηθεί σε εμπορικά προϊόντα χωρίς royalties, χωρίς υδατογράφημα αξιολόγησης ή περιορισμό χρήσης.
Η βιβλιοθήκη δεν έχει εξαρτήσεις τρίτων εγγενών — απαιτείται μόνο η τυπική βιβλιοθήκη Python κατά την εκτέλεση.