Introduction

PsdImage.Layers renvoie chaque calque d’un document PSD ou PSB sous forme de tableau Layer. Cet article examine spécifiquement ce qu’un Layer expose: sa géométrie et son état visuel, les énumérations du mode de fusion et des indicateurs de masque, ainsi que les classes de métadonnées décrivant les canaux, le masque et les plages de fusion d’un calque.


Ce qui est inclus

La classe Layer

Chaque Layer possède un nom Pascal (Name), une Rectangle de délimitation (Bounds, avec les dérivés Width/Height/Top/Left/Bottom/Right), un état de visibilité et de composition (IsVisible, Opacity, Clipping, BlendModeKey), ainsi qu’un nombre de canaux (ChannelsCount). Name, IsVisible, Opacity, Clipping, BlendModeKey et les quatre bords de délimitation peuvent tous être modifiés et réécrits avec PsdImage.Save().

using var image = (PsdImage)Image.Load(inputPath);

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

Modes de fusion et indicateurs de masque

BlendModeKey est une valeur d’énumération BlendMode — la bibliothèque définit les 29 modes de fusion PSD standard (Normal, Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, HardLight, SoftLight, Difference, Exclusion, Hue, Saturation, Color, Luminosity, et d’autres). Une énumération LayerMaskFlags distincte (None, RelativeToLayer, Disabled, InvertedWhenBlending, UserMaskFromRenderingOtherData, UserOrVectorMasksHaveParameters) décrit le comportement de rendu du masque lorsqu’un calque en possède un.

Métadonnées des canaux et des masques

Layer.ChannelInformation renvoie un ChannelInformation[] décrivant l’ID de chaque canal, la méthode de compression et la longueur en octets. Layer.LayerMaskData (un LayerMaskData abstrait, concrètement un LayerMaskDataShort lorsqu’il est présent) décrit les limites et les drapeaux d’un masque de calque; Layer.LayerBlendingRangesData expose les plages de fusion composites et par canal. Les trois propriétés sont en lecture seule dans cette version FOSS — leurs mutateurs lèvent NotSupportedException si appelés, même si elles apparaissent comme des propriétés classiques get/set.

Layer layer = image.Layers[0];
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}");
}

Démarrage rapide

git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet build
using Aspose.PSD.FileFormats.Psd;
using Aspose.PSD.FileFormats.Psd.Layers;
using System.Linq;

using var image = (PsdImage)Image.Load("input.psd");

var visibleLayers = image.Layers.Where(layer => layer.IsVisible);
foreach (Layer layer in visibleLayers)
{
    Console.WriteLine($"{layer.Name}: Opacity={layer.Opacity}, BlendMode={layer.BlendModeKey}");
}

Formats pris en charge

FormatExtensionLireÉcrire
Document Photoshoppsd✓✓
Document Photoshop Largepsb✓✓

Open source & licences

Aspose.PSD FOSS pour .NET est sous licence MIT et peut être utilisé dans des produits commerciaux sans redevances, sans filigrane d’évaluation ni limite d’utilisation.

Le paquet est en version 1.0.0 et ne nécessite que .NET 10.0 à l’exécution — il n’a aucune autre dépendance tierce.


Premiers pas

Ressources associées