Bevezetés

PsdImage.Layers minden réteget visszaad egy PSD vagy PSB dokumentumban Layer tömbként. Ez a bejegyzés kifejezetten arra összpontosít, hogy egy Layer mit tár fel: annak geometriáját és vizuális állapotát, a keverési mód és maszk jelző enumerációkat, valamint a metaadat osztályokat, amelyek leírják egy réteg csatornáit, maszkját és keverési tartományait.


Mi van benne

A réteg osztály

Minden Layer Pascal nevet tartalmaz (Name), egy határoló Rectangle (Bounds, származtatott Width/Height/Top/Left/Bottom/Right), láthatósági és kompozíciós állapotot (IsVisible, Opacity, Clipping, BlendModeKey), valamint egy csatornaszámot (ChannelsCount). Name, IsVisible, Opacity, Clipping, BlendModeKey, és a négy határél is módosítható és visszaírható a PsdImage.Save() segítségével.

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

Keverési módok és maszk jelzők

BlendModeKey egy BlendMode enum érték — a könyvtár definiálja az összes 29 szabványos PSD keverési módot (Normal, Multiply, Screen, Overlay, Darken, Lighten, ColorDodge, ColorBurn, HardLight, SoftLight, Difference, Exclusion, Hue, Saturation, Color, Luminosity, és egyebek). Egy külön LayerMaskFlags enum (None, RelativeToLayer, Disabled, InvertedWhenBlending, UserMaskFromRenderingOtherData, UserOrVectorMasksHaveParameters) írja le a maszk renderelési viselkedését, amikor egy rétegnek van maszkja.

Csatorna és Maszk Metaadatok

Layer.ChannelInformation egy ChannelInformation[] visszaad, amely leírja minden csatorna azonosítóját, tömörítési módszerét és bájt hosszát. Layer.LayerMaskData (egy absztrakt LayerMaskData, konkrétan egy LayerMaskDataShort, ha jelen van) leírja a rétegmaszk határait és jelzőit; Layer.LayerBlendingRangesData feltárja a kompozit és csatornaankénti keverési tartományokat. Ezen három tulajdonság csak olvasható ebben a FOSS buildben — a setterjeik dobnak NotSupportedException, ha meghívják őket, még akkor is, ha reguláris get/set tulajdonságként jelennek meg.

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

Gyors Kezdés

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

Támogatott Formátumok

FormátumKiterjesztésOlvasásÍrás
Photoshop-dokumentumpsd✓✓
Photoshop nagy dokumentumpsb✓✓

Nyílt forráskód & Licencelés

Aspose.PSD FOSS a .NET számára MIT licenc alatt áll, és kereskedelmi termékekben használható jogdíj nélkül, értékelési vízjel vagy felhasználási korlát nélkül.

A csomag verziója 1.0.0, és futásidőben csak .NET 10.0-ra van szüksége — nincs más harmadik fél függősége.


Első lépések

Kapcsolódó források