Introducción
PsdImage.Layers devuelve cada capa en un documento PSD o PSB como una matriz de Layer. Esta publicación examina específicamente lo que expone un Layer: su geometría y estado visual, las enumeraciones de modo de fusión y banderas de máscara, y las clases de metadatos que describen los canales, la máscara y los rangos de fusión de una capa.
Qué se incluye
La clase Layer
Cada Layer lleva un nombre Pascal (Name), un Rectangle delimitador (Bounds, con Width/Height/Top/Left/Bottom/Right derivados), estado de visibilidad y composición (IsVisible, Opacity, Clipping, BlendModeKey), y un recuento de canales (ChannelsCount). Name, IsVisible, Opacity, Clipping, BlendModeKey y los cuatro bordes de los límites pueden modificarse y escribirse de nuevo con 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}");
}
Modos de fusión y banderas de máscara
BlendModeKey es un valor de enumeración BlendMode — la biblioteca define los 29 modos de fusión estándar de PSD (Normal, Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, HardLight, SoftLight, Difference, Exclusion, Hue, Saturation, Color, Luminosity, y otros). Una enumeración LayerMaskFlags separada (None, RelativeToLayer, Disabled, InvertedWhenBlending, UserMaskFromRenderingOtherData, UserOrVectorMasksHaveParameters) describe el comportamiento de renderizado de máscara cuando una capa tiene una.
Metadatos de Canal y Máscara
Layer.ChannelInformation devuelve un ChannelInformation[] que describe el ID de cada canal, el método de compresión y la longitud en bytes. Layer.LayerMaskData (un LayerMaskData abstracto, concretamente un LayerMaskDataShort cuando está presente) describe los límites y banderas de una máscara de capa; Layer.LayerBlendingRangesData expone los rangos de fusión compuestos y por canal. Las tres propiedades son de solo lectura en esta compilación FOSS — sus setters lanzan NotSupportedException si se llaman, aunque aparecen como propiedades normales de obtención/establecimiento.
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}");
}
Inicio rápido
git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet buildusing 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}");
}
Formatos compatibles
| Formato | Extensión | Leer | Escribir |
|---|---|---|---|
| Documento de Photoshop | psd | ✓ | ✓ |
| Documento grande de Photoshop | psb | ✓ | ✓ |
Código abierto y licencias
Aspose.PSD FOSS para .NET tiene licencia MIT y puede usarse en productos comerciales sin regalías, sin marca de agua de evaluación ni límite de uso.
El paquete está en la versión 1.0.0 y solo requiere .NET 10.0 en tiempo de ejecución — no tiene otras dependencias de terceros.