Layers
Layers
PsdImage.layers επιστρέφει κάθε αναλυμένο στρώμα ως λίστα από αντικείμενα Layer. Κάθε Layer αποκαλύπτει τη δική του γεωμετρία, ορατότητα και κατάσταση σύνθεσης, καθώς και μεταδεδομένα σχετικά με τα κανάλια του, τη μάσκα και τις περιοχές ανάμειξης.
Ανάγνωση μεταδεδομένων στρωμάτων
name, bounds (και τα παράγωγα width/height/top/left/bottom/right), is_visible, opacity, clipping, blend_mode_key και channels_count είναι όλα άμεσα αναγνώσιμα.
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}")Υποστηριζόμενες επεξεργασίες μεταδεδομένων
name, is_visible, opacity, clipping, blend_mode_key και οι τέσσερις άκρες ορίων (top/left/bottom/right) μπορούν να αλλάξουν επιτόπου και να εγγραφούν ξανά με το PsdImage.save().
from aspose_psd_foss.psdimage import PsdImage
from aspose_psd_foss.layers.blendmode import BlendMode
with PsdImage.load("input.psd") as image:
layer = image.layers[0]
layer.name = f"{layer.name} (edited)"
layer.is_visible = not layer.is_visible
layer.opacity = 128
layer.blend_mode_key = BlendMode.MULTIPLY
image.save("output.psd")Μεταδεδομένα καναλιού και μάσκας
channel_information, layer_mask_data και layer_blending_ranges_data είναι read-only σε αυτήν τη FOSS έκδοση — οι setters τους προκαλούν NotSupportedException.
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}")Αφαίρεση ή Αναδιάταξη Στρωμάτων
PsdImage.layers διαθέτει setter καθώς και getter: η εκχώρηση μιας φιλτραρισμένης ή αναδιατεταγμένης λίστας αντικαθιστά τη συλλογή στρωμάτων του εγγράφου.
from aspose_psd_foss.psdimage import PsdImage
with PsdImage.load("input.psd") as image:
image.layers = [layer for layer in image.layers if layer.is_visible]
image.save("output.psd")Συμβουλές και Καλές Πρακτικές
- Προσπελαύστε το
image.layersμε βάση τη θέση· η σειρά της λίστας ταιριάζει με τη σειρά των στρωμάτων του εγγράφου. blend_mode_keyδέχεται οποιαδήποτε τιμή του enumBlendMode— δεν γίνεται καμία επικύρωση σε σχέση με τη δηλωμένη λειτουργία χρώματος του εγγράφου.channel_information,layer_mask_dataκαιlayer_blending_ranges_dataμπορούν να διαβαστούν αλλά ποτέ δεν μπορούν να επανεκχωρηθούν.- Κλήστε το
PsdImage.save()μία φορά μετά από όλες τις τροποποιήσεις· κάθε κλήση γράφει το πλήρες έγγραφο.
Κοινά Προβλήματα
| Πρόβλημα | Αιτία | Διόρθωση |
|---|---|---|
NotSupportedException όταν ορίζονται channel_information, layer_mask_data ή layer_blending_ranges_data | Αυτές οι 3 ιδιότητες είναι μόνο για ανάγνωση στην έκδοση FOSS, παρόλο που διαθέτουν setter | Διαβάστε την τιμή· μην προσπαθήσετε να την εκχωρήσετε ξανά |
Πρόσβαση layer_mask_data όταν δεν υπάρχει μάσκα | Δεν κάθε στρώση διαθέτει υποενότητα μάσκας | Ελέγξτε layer.has_mask_data πριν από την ανάγνωση του layer.layer_mask_data |
FAQ
Μπορώ να αφαιρέσω μια στρώση;
Ναι — επανατοποθετήστε το image.layers σε μια φιλτραρισμένη λίστα.
Μπορώ να αλλάξω τα δεδομένα καναλιού ή μάσκας μιας στρώσης;
Όχι. channel_information, layer_mask_data και layer_blending_ranges_data είναι μόνο για ανάγνωση — μόνο το name, is_visible, opacity, clipping, blend_mode_key και τα άκρα των ορίων μπορούν να αλλάξουν.
API Reference Σύνοψη
| Κλάση/Μέθοδος | Περιγραφή |
|---|---|
PsdImage.layers | Αποκτά ή ορίζει τη συλλογή στρωμάτων — δυνατότητα ορισμού για αφαίρεση/αναδιάταξη |
Layer.name / is_visible / opacity / clipping / blend_mode_key / top / left / bottom / right | Υποστηριζόμενες επεξεργασίες μεταδεδομένων στρωμάτων |
Layer.bounds / width / height / channels_count | Γεωμετρία στρώματος μόνο για ανάγνωση |
Layer.channel_information / layer_mask_data / layer_blending_ranges_data | Μεταδεδομένα καναλιού/μάσκας/ανάμειξης μόνο για ανάγνωση |