Layers

Layers

PsdImage.layers renvoie chaque calque analysé sous forme d’une liste d’objets Layer. Chaque Layer expose sa propre géométrie, visibilité et état de composition, ainsi que les métadonnées concernant ses canaux, son masque et ses plages de fusion.


Lecture des métadonnées des calques

name, bounds (et les dérivés width/height/top/left/bottom/right), is_visible, opacity, clipping, blend_mode_key et channels_count sont tous lisibles directement.

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}")

Modifications de métadonnées prises en charge

name, is_visible, opacity, clipping, blend_mode_key et les quatre bords de limites (top/left/bottom/right) peuvent être modifiés sur place et réécrits avec 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")

Métadonnées des canaux et du masque

channel_information, layer_mask_data et layer_blending_ranges_data sont en lecture seule dans cette version FOSS — leurs mutateurs déclenchent 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}")

Suppression ou réorganisation des calques

PsdImage.layers possède à la fois un mutateur et un accesseur: l’affectation d’une liste filtrée ou réordonnée remplace la collection de calques du document.

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")

Conseils et bonnes pratiques

  • Indexez image.layers par position; l’ordre de la liste correspond à l’ordre des calques du document.
  • blend_mode_key accepte n’importe quelle valeur d’énumération BlendMode — aucune validation n’est effectuée par rapport au mode couleur déclaré du document.
  • channel_information, layer_mask_data et layer_blending_ranges_data peuvent être lus mais jamais réassignés.
  • Appelez PsdImage.save() une fois après toutes les modifications; chaque appel écrit le document complet.

Problèmes courants

ProblèmeCauseCorrection
NotSupportedException lors de la définition de channel_information, layer_mask_data ou layer_blending_ranges_dataCes 3 propriétés sont en lecture seule dans la version FOSS malgré la présence d’un setterLire la valeur ; ne pas tenter de la réassigner
Accès layer_mask_data lorsqu’il n’y a pas de masqueTous les calques ne possèdent pas de sous-section de masqueVérifiez layer.has_mask_data avant de lire layer.layer_mask_data

FAQ

Puis-je supprimer une couche?

Oui — réaffectez image.layers à une liste filtrée.

Puis-je modifier le canal ou les données de masque d’une couche?

Non. channel_information, layer_mask_data et layer_blending_ranges_data sont en lecture seule — seuls name, is_visible, opacity, clipping, blend_mode_key et les bords des limites peuvent être modifiés.


API Reference Résumé

Classe/MéthodeDescription
PsdImage.layersObtient ou définit la collection de calques — modifiable pour suppression/reclassement
Layer.name / is_visible / opacity / clipping / blend_mode_key / top / left / bottom / rightÉditions de métadonnées de calque prises en charge
Layer.bounds / width / height / channels_countGéométrie de calque en lecture seule
Layer.channel_information / layer_mask_data / layer_blending_ranges_dataMétadonnées de canal/masque/mélange en lecture seule

Voir aussi

 Français