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 δέχεται οποιαδήποτε τιμή του enum BlendMode — δεν γίνεται καμία επικύρωση σε σχέση με τη δηλωμένη λειτουργία χρώματος του εγγράφου.
  • 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Μεταδεδομένα καναλιού/μάσκας/ανάμειξης μόνο για ανάγνωση

Δείτε επίσης

 Ελληνικά