Introducere

PsdImage.Layers returnează fiecare strat dintr-un document PSD sau PSB ca un array Layer. Acest articol se concentrează în mod specific pe ce expune un Layer: geometria și starea vizuală, enumerările modului de amestecare și ale indicatoarelor de mască, și clasele de metadate care descriu canalele, masca și intervalele de amestecare ale unui strat.


Ce este inclus

Clasa Layer

Fiecare Layer are un nume Pascal (Name), o limită Rectangle (Bounds, cu Width/Height/Top/Left/Bottom/Right derivat), stare de vizibilitate și compunere (IsVisible, Opacity, Clipping, BlendModeKey), și un număr de canale (ChannelsCount). Name, IsVisible, Opacity, Clipping, BlendModeKey și cele patru margini de limită pot fi toate modificate și scrise înapoi cu 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}");
}

Moduri de amestecare și indicatoare de mască

BlendModeKey este o valoare enum BlendMode — biblioteca definește toate cele 29 de moduri standard de amestecare PSD (Normal, Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, HardLight, SoftLight, Difference, Exclusion, Hue, Saturation, Color, Luminosity și altele). Un enum LayerMaskFlags separat (None, RelativeToLayer, Disabled, InvertedWhenBlending, UserMaskFromRenderingOtherData, UserOrVectorMasksHaveParameters) descrie comportamentul de redare a măștii atunci când un strat are una.

Metadate de canal și mască

Layer.ChannelInformation returnează un ChannelInformation[] care descrie ID-ul fiecărui canal, metoda de comprimare și lungimea în octeți. Layer.LayerMaskData (un LayerMaskData abstract, concret un LayerMaskDataShort când este prezent) descrie limitele și flag-urile unei măști de strat; Layer.LayerBlendingRangesData expune intervalele de amestec compozite și pe canal. Cele trei proprietăți sunt doar pentru citire în această construcție FOSS — setter-ele lor aruncă NotSupportedException dacă sunt apelate, chiar dacă apar ca proprietăți obișnuite de tip 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}");
}

Pornire rapidă

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

Formate suportate

FormatExtensieCiteșteScrie
Document Photoshoppsd✓✓
Document mare Photoshoppsb✓✓

Open Source & Licențiere

Aspose.PSD FOSS pentru .NET este licențiat sub MIT și poate fi utilizat în produse comerciale fără redevențe, fără marcaj de evaluare sau limită de utilizare.

Pachetul este la versiunea 1.0.0 și necesită doar .NET 10.0 la rulare — nu are alte dependențe terțe.


Începeți

Resurse conexe