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 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}");
}
Formate suportate
| Format | Extensie | Citește | Scrie |
|---|---|---|---|
| Document Photoshop | psd | ✓ | ✓ |
| Document mare Photoshop | psb | ✓ | ✓ |
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.