简介
PsdImage.Layers 将 PSD 或 PSB 文档中的每个图层返回为一个 Layer 数组。本文特别关注 Layer 所暴露的内容:其几何形状和可视状态、混合模式和遮罩标志枚举,以及描述图层通道、遮罩和混合范围的元数据类。
包含内容
图层类
每个 Layer 都具有 Pascal 名称(Name),一个边界 Rectangle(Bounds,以及派生的 Width/Height/Top/Left/Bottom/Right),可见性和合成状态(IsVisible、Opacity、Clipping、BlendModeKey),以及通道计数(ChannelsCount)。Name、IsVisible、Opacity、Clipping、BlendModeKey 和四个边界边缘都可以通过 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}");
}
混合模式和遮罩标志
BlendModeKey 是一个 BlendMode 枚举值——库定义了全部 29 种标准 PSD 混合模式(Normal、Multiply、Screen、Overlay、Darken、Lighten、ColorDodge、ColorBurn、HardLight、SoftLight、Difference、Exclusion、Hue、Saturation、Color、Luminosity 等)。另一个 LayerMaskFlags 枚举(None、RelativeToLayer、Disabled、InvertedWhenBlending、UserMaskFromRenderingOtherData、UserOrVectorMasksHaveParameters)描述了图层拥有遮罩时的遮罩渲染行为。
通道和遮罩元数据
Layer.ChannelInformation 返回一个 ChannelInformation[],描述每个通道的 ID、压缩方式和字节长度。Layer.LayerMaskData(一个抽象的 LayerMaskData,在存在时具体为 LayerMaskDataShort)描述图层遮罩的边界和标志;Layer.LayerBlendingRangesData 暴露复合和每通道的混合范围。这三个属性在此 FOSS 构建中都是只读的——如果调用它们的 setter,会抛出 NotSupportedException,即使它们看起来是普通的 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}");
}
快速入门
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}");
}
支持的格式
| 格式 | 扩展名 | 读取 | 写入 |
|---|---|---|---|
| Photoshop 文档 | psd | ✓ | ✓ |
| Photoshop 大型文档 | psb | ✓ | ✓ |
开源与许可
Aspose.PSD FOSS 对于 .NET 是 MIT 许可的,可在商业产品中使用且无需支付版税,且没有评估水印或使用限制。
该软件包的版本为 1.0.0,运行时仅需 .NET 10.0 —— 并没有其他第三方依赖。