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.layerspar position; l’ordre de la liste correspond à l’ordre des calques du document. blend_mode_keyaccepte n’importe quelle valeur d’énumérationBlendMode— aucune validation n’est effectuée par rapport au mode couleur déclaré du document.channel_information,layer_mask_dataetlayer_blending_ranges_datapeuvent ê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ème | Cause | Correction |
|---|---|---|
NotSupportedException lors de la définition de channel_information, layer_mask_data ou layer_blending_ranges_data | Ces 3 propriétés sont en lecture seule dans la version FOSS malgré la présence d’un setter | Lire la valeur ; ne pas tenter de la réassigner |
Accès layer_mask_data lorsqu’il n’y a pas de masque | Tous les calques ne possèdent pas de sous-section de masque | Vé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éthode | Description |
|---|---|
PsdImage.layers | Obtient 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_count | Géométrie de calque en lecture seule |
Layer.channel_information / layer_mask_data / layer_blending_ranges_data | Métadonnées de canal/masque/mélange en lecture seule |