Introdução

PsdImage.Layers retorna cada camada em um documento PSD ou PSB como um array Layer. Este post examina especificamente o que um Layer expõe: sua geometria e estado visual, as enumerações de modo de mesclagem e bandeiras de máscara, e as classes de metadados que descrevem os canais, máscara e intervalos de mesclagem de uma camada.


O que está incluído

A Classe Layer

Cada Layer possui um nome Pascal (Name), um Rectangle delimitador (Bounds, com derivados Width/Height/Top/Left/Bottom/Right), estado de visibilidade e composição (IsVisible, Opacity, Clipping, BlendModeKey), e uma contagem de canais (ChannelsCount). Name, IsVisible, Opacity, Clipping, BlendModeKey e as quatro bordas de limites podem ser alterados e gravados novamente com 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 Mesclagem e Bandeiras de Máscara

BlendModeKey é um valor enum BlendMode — a biblioteca define todos os 29 modos de mesclagem padrão do PSD (Normal, Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, HardLight, SoftLight, Difference, Exclusion, Hue, Saturation, Color, Luminosity e outros). Um enum separado LayerMaskFlags (None, RelativeToLayer, Disabled, InvertedWhenBlending, UserMaskFromRenderingOtherData, UserOrVectorMasksHaveParameters) descreve o comportamento de renderização de máscara quando uma camada possui uma.

Metadados de Canal e Máscara

Layer.ChannelInformation retorna um ChannelInformation[] que descreve o ID de cada canal, o método de compressão e o comprimento em bytes. Layer.LayerMaskData (um LayerMaskData abstrato, concretamente um LayerMaskDataShort quando presente) descreve os limites e bandeiras de uma máscara de camada; Layer.LayerBlendingRangesData expõe as faixas de mesclagem compostas e por canal. Todas essas três propriedades são somente leitura nesta compilação FOSS — seus setters lançam NotSupportedException se chamados, embora apareçam como propriedades regulares 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}");
}

Início Rápido

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

Formatos Compatíveis

FormatoExtensãoLerEscrever
Documento Photoshoppsd✓✓
Documento Grande Photoshoppsb✓✓

Código Aberto & Licenciamento

Aspose.PSD FOSS para .NET está licenciado sob MIT e pode ser usado em produtos comerciais sem royalties, sem marca d’água de avaliação ou limite de uso.

O pacote está na versão 1.0.0 e requer apenas .NET 10.0 em tempo de execução — não tem outras dependências de terceiros.


Primeiros passos

Recursos relacionados