PsdImage 和Layer 为核心,让 .NET 开发者能够以编程方式访问 PSD 文档的结构,且无需PsdImage.Layers 暴露每个图层:每个 Layer 报告其名称,BlendMode),以及更底层的ChannelInformation) 和蒙版数据 (LayerMaskData)。一个子集的Left/Top/Right/Bottom) 和混合模式——可以PsdImage.Save() 持久化回磁盘;其他所有内容在dotnet add package Aspose.PSD.FOSS — 该库没有任何第三方本机Image.Load(filePath) 或 Image.Load(stream) 打开文件并返回一个 Image,可转换为 PsdImage 以进行 PSD 特定访问PsdImage.Width、Height 和 Size 报告画布尺寸PsdImage.ColorMode(ColorModes)、BitsPerChannel 和 Compression(CompressionMethod)描述像素数据的编码方式PsdImage.Version(PsdVersion)区分标准 PSD 与大文档 PSB 变体PsdImage.Layers 返回文档顺序中的每个 Layer;PsdImage.ActiveLayer 报告哪个是活动的Layer 暴露 Name、Bounds、Opacity、IsVisible 和 BlendModeKey(BlendMode)Layer.ChannelInformation 和 Layer.LayerMaskData 暴露通道和遮罩元数据,以便进行更深入的检查Layer.ChannelsCount 报告层携带了多少图像通道Layer.Name、Layer.Left/Top/Right/Bottom 和 Layer.BlendModeKey 可以直接设置PsdImage.Save(filePath) 或 PsdImage.Save(stream) 将修改后的文档持久化回磁盘Image.Load 重新加载已保存的文件可确认编辑能够正确往返NotSupportedException —— 此构建仅支持元数据编辑,不支持完整的重新创作PsdImage.ImageResources 和 GlobalLayerResources 公开 ResourceBlock/LayerResource 集合PsdImage.GlobalLayerMaskInfo 报告文档范围的图层蒙版信息PsdImage.IsFlatten 和 HasTransparencyData 报告文档级别的标志PsdLoadException 和 PsdSaveException 显示加载/保存错误并提供清晰的消息使用 Image.Load 加载文件,并将结果强制转换为 PsdImage 以访问 PSD 特定成员。
using var image = (PsdImage)Image.Load("test.psd");
Console.WriteLine($"Width: {image.Width}, Channels: {image.ChannelsCount}, Layers: {image.Layers.Length}");
Layer layer = image.Layers[0];
Console.WriteLine($"Bounds: {layer.Bounds}, BlendMode: {layer.BlendModeKey}, Opacity: {layer.Opacity}, Visible: {layer.IsVisible}");
图层名称、边界和混合模式可以就地更改并保存回磁盘。
using (var image = (PsdImage)Image.Load("test.psd"))
{
image.Layers[0].Name = "Renamed layer";
image.Layers[0].Left = 10;
image.Layers[0].Top = 20;
image.Layers[0].Right = 40;
image.Layers[0].Bottom = 60;
image.Layers[0].BlendModeKey = BlendMode.Multiply;
image.Save("edited.psd");
}
using var reloaded = (PsdImage)Image.Load("edited.psd");
Console.WriteLine($"Name: {reloaded.Layers[0].Name}, BlendMode: {reloaded.Layers[0].BlendModeKey}");
通道信息可以读取,但不能重新赋值——尝试设置它会抛出 NotSupportedException。
using var image = (PsdImage)Image.Load("test.psd");
Layer layer = image.Layers[0];
ChannelInformation[] channelInformation = layer.ChannelInformation;
Console.WriteLine($"Channel count: {layer.ChannelsCount}, First channel length: `NotSupportedException`");
// layer.ChannelInformation = channelInformation; // throws NotSupportedException
Aspose.PSD FOSS for .NET 是 MIT 许可证。您可以根据 MIT 许可证的条款使用、修改和重新分发它,包括在商业产品中。
请参阅上面的安装部分获取当前的安装命令。
它加载并保存 PSD 和 PSB(Photoshop 大型文档)文件。它不渲染或导出像素数据到其他光栅格式,如 PNG 或 JPEG。
PsdImage(Image 的子类)。使用 PsdImage.Load 加载文档,然后读取其 Layers 集合和头部属性。
是的 — Layer 为多个属性(例如可见性和名称)提供了可用的 setter,PsdImage.Layers 本身也有可用的 setter 用于替换集合。某些特定属性(通道信息、蒙版数据、混合范围以及一些文档级资源)在此 FOSS 构建中是只读的,若尝试设置会抛出 NotSupportedException。