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 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}");
}
Támogatott Formátumok
| Formátum | Kiterjesztés | Olvasás | Írás |
|---|---|---|---|
| Photoshop-dokumentum | psd | ✓ | ✓ |
| Photoshop nagy dokumentum | psb | ✓ | ✓ |
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.