1. 产品
  2.   Aspose.PSD
  3.   Aspose.PSD FOSS for .NET

.NET 的 Aspose.PSD FOSS

开源 .NET 库,用于加载、检查和保存 PSD/PSB 文件,并可访问图层元数据。采用 MIT 许可证,无需 Adobe Photoshop。

开源 .NET 库用于 PSD/PSB 文件

Aspose.PSD FOSS for .NET 是一个免费、MIT 许可证的纯 C# 库,用于加载、检查,
并保存 Adobe Photoshop PSD 和 PSB 文件,无需 Adobe Photoshop 或任何
专有运行时。它提供一个轻量级、独立的 API,以 PsdImage 和
Layer 为核心,让 .NET 开发者能够以编程方式访问 PSD 文档的结构,且无需
本机依赖项进行编译。该库读取 PSD/PSB 文件的尺寸、颜色模式、位深度和压缩
方式,并通过 PsdImage.Layers 暴露每个图层:每个 Layer 报告其名称,
边界、不透明度、可见性和混合模式键 (BlendMode),以及更底层的
通道信息 (ChannelInformation) 和蒙版数据 (LayerMaskData)。一个子集的
层元数据——名称、边界 (Left/Top/Right/Bottom) 和混合模式——可以
就地修改并通过 PsdImage.Save() 持久化回磁盘;其他所有内容在
表面上设计为只读,此 FOSS 构建中。Aspose.PSD FOSS for .NET 使用 MIT 许可证。使用以下方式安装
dotnet add package Aspose.PSD.FOSS — 该库没有任何第三方本机
依赖,仅依赖 .NET BCL。有关企业产品系列,请参阅 Aspose.PSD — Enterprise Product Family。

加载并检查 PSD/PSB 文件

  • Image.Load(filePath) 或 Image.Load(stream) 打开文件并返回一个 Image,可转换为 PsdImage 以进行 PSD 特定访问
  • PsdImage.Width、Height 和 Size 报告画布尺寸
  • PsdImage.ColorMode(ColorModes)、BitsPerChannel 和 Compression(CompressionMethod)描述像素数据的编码方式
  • PsdImage.Version(PsdVersion)区分标准 PSD 与大文档 PSB 变体

验证并编目设计文件

  • 在将设计文件批量交给下游流程之前进行验证
  • 构建 PSD/PSB 尺寸和颜色模式的轻量级资产目录
  • 检测需要不同处理方式的 PSB(大文档)文件,而不是标准 PSD

使用图层

  • PsdImage.Layers 返回文档顺序中的每个 Layer;PsdImage.ActiveLayer 报告哪个是活动的
  • 每个 Layer 暴露 Name、Bounds、Opacity、IsVisible 和 BlendModeKey(BlendMode)
  • Layer.ChannelInformation 和 Layer.LayerMaskData 暴露通道和遮罩元数据,以便进行更深入的检查
  • Layer.ChannelsCount 报告层携带了多少图像通道

审计层结构

  • 审计 PSD 的图层结构而无需打开 Photoshop
  • 为设计审查生成图层名称、可见性和混合模式的报告
  • 识别先前编辑留下的隐藏或零不透明度图层

编辑基本图层元数据

  • 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 显示加载/保存错误并提供清晰的消息

诊断和检查

  • 诊断特定 PSD 文件加载失败的原因,使用具体的异常类型而不是通用错误
  • 检查文件在进一步处理之前是否已以扁平化形式保存
  • 检查嵌入的资源块以获取格式级元数据

加载 PSD 文件并检查其图层

使用 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 许可证的条款使用、修改和重新分发它,包括在商业产品中。

我该如何安装 Aspose.PSD FOSS for .NET?

请参阅上面的安装部分获取当前的安装命令。

哪些格式可以 Aspose.PSD FOSS for .NET 读取和写入?

它加载并保存 PSD 和 PSB(Photoshop 大型文档)文件。它不渲染或导出像素数据到其他光栅格式,如 PNG 或 JPEG。

主要入口类是什么?

PsdImage(Image 的子类)。使用 PsdImage.Load 加载文档,然后读取其 Layers 集合和头部属性。

我可以修改图层元数据吗?

是的 — Layer 为多个属性(例如可见性和名称)提供了可用的 setter,PsdImage.Layers 本身也有可用的 setter 用于替换集合。某些特定属性(通道信息、蒙版数据、混合范围以及一些文档级资源)在此 FOSS 构建中是只读的,若尝试设置会抛出 NotSupportedException。

  

支持和学习资源

 中文