Introduktion
PsdImage.Layers returnerar varje lager i ett PSD- eller PSB-dokument som en Layer-array. Det här inlägget tittar specifikt på vad en Layer avslöjar: dess geometri och visuella tillstånd, blandningsläges- och maskflaggsuppräkningarna, samt metadataklasserna som beskriver ett lagers kanaler, mask och blandningsintervall.
Vad som ingår
Layer-klassen
Varje Layer har ett Pascal-namn (Name), en avgränsande Rectangle (Bounds, med avledda Width/Height/Top/Left/Bottom/Right), synlighet och sammansättningsstatus (IsVisible, Opacity, Clipping, BlendModeKey), och ett kanalantal (ChannelsCount). Name, IsVisible, Opacity, Clipping, BlendModeKey och de fyra gränskanterna kan alla ändras och skrivas tillbaka med 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}");
}
Blandningslägen och maskflaggor
BlendModeKey är ett BlendMode enum-värde — biblioteket definierar alla 29 standard-PSD-blandningslägen (Normal, Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, HardLight, SoftLight, Difference, Exclusion, Hue, Saturation, Color, Luminosity och andra). En separat LayerMaskFlags enum (None, RelativeToLayer, Disabled, InvertedWhenBlending, UserMaskFromRenderingOtherData, UserOrVectorMasksHaveParameters) beskriver maskrenderingsbeteendet när ett lager har en.
Kanal- och maskmetadata
Layer.ChannelInformation returnerar en ChannelInformation[] som beskriver varje kanals ID, komprimeringsmetod och byte-längd. Layer.LayerMaskData (en abstrakt LayerMaskData, konkret en LayerMaskDataShort när den finns) beskriver en lagermaskens gränser och flaggor; Layer.LayerBlendingRangesData exponerar de sammansatta och per-kanal blandningsintervallen. Alla tre av dessa egenskaper är skrivskyddade i detta FOSS-bygge — deras set-metoder kastar NotSupportedException om de anropas, även om de visas som vanliga get/set-egenskaper.
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}");
}
Snabbstart
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}");
}
Stödda format
| Format | Filändelse | Läs | Skriv |
|---|---|---|---|
| Photoshop-dokument | psd | ✓ | ✓ |
| Photoshop Stort dokument | psb | ✓ | ✓ |
Öppen källkod & licensiering
Aspose.PSD FOSS för .NET är licensierad under MIT och får användas i kommersiella produkter utan royalties, utan någon utvärderingsvattenstämpel eller användningsgräns.
Paketet är i version 1.0.0 och kräver endast .NET 10.0 vid körning — det har inga andra tredjepartsberoenden.