Layers

Layers

PsdImage.Layers renvoie chaque calque analysé sous forme d’un tableau 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 du calque

Name, Bounds (et les dérivés Width/Height/Top/Left/Bottom/Right), IsVisible, Opacity, Clipping, BlendModeKey et ChannelsCount sont tous lisibles directement.

foreach (Layer layer in image.Layers)
{
    Console.WriteLine($"{layer.Name}: {layer.Bounds}, " +
                       $"Visible={layer.IsVisible}, Opacity={layer.Opacity}, " +
                       $"BlendMode={layer.BlendModeKey}");
}

Modifications de métadonnées prises en charge

Name, IsVisible, Opacity, Clipping, BlendModeKey et les quatre bords des limites (Top/Left/Bottom/Right) peuvent être modifiés sur place et réécrits avec PsdImage.Save().

Layer layer = image.Layers[0];
layer.Name = $"{layer.Name} (edited)";
layer.IsVisible = !layer.IsVisible;
layer.Opacity = 128;
layer.BlendModeKey = BlendMode.Multiply;
image.Save(outputPath);

Métadonnées des canaux et du masque

ChannelInformation, LayerMaskData et LayerBlendingRangesData sont en mode lecture seule dans cette version FOSS — leurs setters lèvent NotSupportedException.

foreach (ChannelInformation channel in layer.ChannelInformation)
{
    Console.WriteLine($"Channel {channel.ChannelID}: {channel.CompressionMethod}, {channel.Length} bytes");
}

if (layer.LayerMaskData is { } mask)
{
    Console.WriteLine($"Mask bounds: {mask.MaskRectangle}, flags: {mask.Flags}");
}

Suppression ou réorganisation des calques

PsdImage.Layers possède à la fois un setter et un getter: assigner un tableau filtré ou réordonné remplace la collection de calques du document. Il n’existe aucun moyen public de créer une nouvelle instance de Layer, ce qui ne permet que de supprimer ou de réordonner les calques déjà présents — pas d’en ajouter depuis zéro.

// Keep only visible layers
image.Layers = image.Layers.Where(layer => layer.IsVisible).ToArray();
image.Save(outputPath);

Conseils et bonnes pratiques

  • Indexez image.Layers par position; l’ordre du tableau correspond à l’ordre des calques du document.
  • BlendModeKey accepte n’importe quelle valeur d’énumération BlendMode — aucune validation n’est effectuée par rapport au mode couleur déclaré du document.
  • ChannelInformation, LayerMaskData et LayerBlendingRangesData 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 ChannelInformation, LayerMaskData ou LayerBlendingRangesDataCes trois propriétés sont en lecture seule dans la version FOSS malgré la présence d’un setterLisez la valeur ; n’essayez pas de la réassigner
LayerMaskData est null pour une coucheToutes les couches n’ont pas de sous-section de masqueVérifier la présence de null avant utilisation (layer.LayerMaskData is { } mask)

FAQ

Puis-je supprimer une couche?

Oui — réaffectez image.Layers à un tableau filtré. Vous ne pouvez pas ajouter une toute nouvelle couche, car Layer n’a pas de constructeur public; seules les couches analysées existantes peuvent être conservées, supprimées ou réordonnées.

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

Non. ChannelInformation, LayerMaskData et LayerBlendingRangesData sont en mode lecture seule — seules Name, IsVisible, Opacity, Clipping, BlendModeKey et les bordures des limites peuvent être modifiées.


API Reference Résumé

Classe/MéthodeDescription
PsdImage.LayersObtient ou définit la collection de calques — modifiable uniquement pour la suppression ou le réordonnancement
Layer.Name / IsVisible / Opacity / Clipping / BlendModeKey / Top / Left / Bottom / RightModifications de métadonnées de calque prises en charge
Layer.Bounds / Width / Height / ChannelsCountGéométrie de calque en lecture seule
Layer.ChannelInformation / LayerMaskData / LayerBlendingRangesDataMétadonnées de canal/masque/fusion en lecture seule

Voir aussi

 Français