Introduzione
PsdImage.Layers restituisce ogni livello in un documento PSD o PSB come un array Layer. Questo post esamina specificamente ciò che un Layer espone: la sua geometria e lo stato visivo, le enumerazioni della modalità di fusione e dei flag di maschera, e le classi di metadati che descrivono i canali, la maschera e le gamme di fusione di un livello.
Cosa è incluso
La classe Layer
Ogni Layer possiede un nome Pascal (Name), un Rectangle di delimitazione (Bounds, con i derivati Width/Height/Top/Left/Bottom/Right), lo stato di visibilità e compositing (IsVisible, Opacity, Clipping, BlendModeKey), e un conteggio dei canali (ChannelsCount). Name, IsVisible, Opacity, Clipping, BlendModeKey, e i quattro bordi di delimitazione possono tutti essere modificati e riscritti 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}");
}
Modalità di fusione e flag di maschera
BlendModeKey è un valore enum BlendMode — la libreria definisce tutte le 29 modalità di fusione PSD standard (Normal, Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, HardLight, SoftLight, Difference, Exclusion, Hue, Saturation, Color, Luminosity, e altre). Un enum LayerMaskFlags separato (None, RelativeToLayer, Disabled, InvertedWhenBlending, UserMaskFromRenderingOtherData, UserOrVectorMasksHaveParameters) descrive il comportamento di rendering della maschera quando un livello ne possiede una.
Metadati del canale e della maschera
Layer.ChannelInformation restituisce un ChannelInformation[] che descrive l’ID di ciascun canale, il metodo di compressione e la lunghezza in byte. Layer.LayerMaskData (un LayerMaskData astratto, concretamente un LayerMaskDataShort quando presente) descrive i limiti e i flag di una maschera di livello; Layer.LayerBlendingRangesData espone le aree di fusione composite e per canale. Tutte e tre queste proprietà sono di sola lettura in questa build FOSS — i loro setter lanciano NotSupportedException se chiamati, anche se appaiono come normali proprietà 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}");
}
Avvio rapido
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}");
}
Formati supportati
| Formato | Estensione | Leggi | Scrivi |
|---|---|---|---|
| Documento Photoshop | psd | ✓ | ✓ |
| Documento Photoshop di grandi dimensioni | psb | ✓ | ✓ |
Open Source e Licenze
Aspose.PSD FOSS per .NET è con licenza MIT e può essere usato in prodotti commerciali senza royalty, senza filigrana di valutazione né limiti di utilizzo.
Il pacchetto è alla versione 1.0.0 e richiede solo .NET 10.0 a runtime — non ha altre dipendenze di terze parti.