如何在 .NET 中使用 Aspose.PSD FOSS Core API

如何在 .NET 中使用 Aspose.PSD FOSS Core API

Aspose.PSD FOSS for .NET 加载并检查通过 PsdImage(Image 的子类)的 PSD/PSB 文档结构。本文介绍加载文档、读取其头部和图像资源,以及将其保存回磁盘。

分步指南

步骤 1:安装软件包

git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-.NET.git
cd Aspose.PSD-FOSS-for-.NET
dotnet build

步骤 2:导入所需类

using Aspose.PSD.FileFormats.Psd;

步骤 3:加载 PSD/PSB 文档

PsdImage.Load 从文件路径或流打开文档:

using var image = PsdImage.Load("input.psd");

第4步:检查文档头部

PsdImage 显示从已解析文档读取的头部字段:Width、Height、BitsPerChannel、ColorMode(ColorModes 值),以及 Compression(CompressionMethod 值):

Console.WriteLine($"{image.Width}x{image.Height}, {image.BitsPerChannel} bpc");
Console.WriteLine($"Color mode: {image.ColorMode}");   // e.g. ColorModes.Rgb
Console.WriteLine($"Compression: {image.Compression}"); // e.g. CompressionMethod.RLE
Console.WriteLine($"Flattened: {image.IsFlatten}");

ColorModes 的取值包括 Bitmap、Grayscale、Indexed、Rgb 和 Cmyk,以及其他(Multichannel、Duotone、Lab)。CompressionMethod 的取值为 Raw、RLE、ZipWithoutPrediction,以及一种带预测的 ZIP 变体。


第5步:读取图像资源块

ImageResources 返回文档已解析的 ResourceBlock 条目。每个块显示 ID、Name 和 Size:

foreach (var resource in image.ImageResources)
{
    Console.WriteLine($"Resource {resource.ID} \"{resource.Name}\" - {resource.Size} bytes");
}

ImageResources 在此 FOSS 构建中是只读的 — 对其赋值会抛出异常 NotSupportedException (请参阅已知限制中的 FAQ).


第6步:保存文档

image.Save("output.psd");

常见问题与解决方案

PsdLoadException 加载文件时。 输入不是有效的 PSD/PSB 文档,或其头部验证失败。请在加载前确认该文件是真正的 PSD/PSB 文件。

NotSupportedException 在设置时 ImageResources or GlobalLayerResources. 此 FOSS 构建不支持这些 setter。请将 ImageResources 视为只读。

ColorMode or Compression 打印为数值而非名称。 将属性显式强制转换为其枚举类型,或使用 .ToString(), 以获取可读名称(ColorModes.Rgb, 而不是 3).

常见问答

我可以从流而不是文件路径加载 PSD 文件吗?

是的 — PsdImage.Load 提供了接受 Stream 的重载。

ImageResources 包含图层数据吗?

不。 ImageResources 包含文档级资源块(从 PSD 图像资源部分解析)。图层级数据通过 PsdImage.Layers — 参见 使用图层.

PsdImage.Version 是 PSD 文件格式版本吗?

不。PsdImage.Version 报告一个内部的 Aspose.PSD 兼容 API 版本号(当前为 6) — 它与加载的文件是 PSD 还是 PSB 无关。

另请参阅

 中文