核心 API
核心 API
PsdImage 是加载、检查和保存 PSD/PSB 文档的入口点。它扩展了抽象的 Image 基类,该基类声明了 Width、Height、Bounds、Load()、Save() 和 Dispose()。
加载和保存文档
Image.Load() 接受文件路径或 Stream 并返回 Image;将结果强制转换为 PsdImage 以访问文档的其余表面。PsdImage.Save() 将文档写回文件路径或流。
using var image = (PsdImage)Image.Load(inputPath);
// ... inspect or edit ...
image.Save(outputPath);文档头属性
PsdImage 将解析后的头部公开为强类型属性:Width、Height、BitsPerChannel、ColorMode、Version、Compression、Size 和 IsFlatten。
Console.WriteLine($"Width: {image.Width}, Height: {image.Height}");
Console.WriteLine($"ColorMode: {image.ColorMode}, Version: {image.Version}");
Console.WriteLine($"Compression: {image.Compression}, IsFlatten: {image.IsFlatten}");图像资源
PsdImage.ImageResources 返回解析后的 ResourceBlock[] 数组。在此 FOSS 构建中,ImageResources、GlobalLayerResources、ActiveLayer 和 HasTransparencyData 可以读取但不能重新赋值——它们的 setter 会抛出 NotSupportedException。
foreach (ResourceBlock resource in image.ImageResources)
{
Console.WriteLine($"Resource {resource.ID}: {resource.Name} ({resource.DataSize} bytes)");
}技巧与最佳实践
- 始终将
Image.Load()的结果强制转换为PsdImage,以访问 PSD 特定成员。 - 将
Dispose()级别的对象包装在using语句中;PsdImage实现了IDisposable。 - 即使它们公开了 setter,也应将
ImageResources、GlobalLayerResources、ActiveLayer和HasTransparencyData视为只读。 - 在对
image.Layers进行索引之前检查image.Layers.Length—— 扁平化文档可能没有图层。
常见问题
| 问题 | 原因 | 修复 |
|---|---|---|
NotSupportedException 在设置 ImageResources 时 | 尽管有 setter,此属性在 FOSS 构建中是只读的 | 读取该值;不要尝试重新赋值 |
在扁平化文档上出现空的 image.Layers 数组 | IsFlatten 为 true,且文档没有解析的层 | 在索引到 image.Layers 之前,请检查 image.Layers.Length(或 image.IsFlatten) |
FAQ
加载 PSD 文档会解码像素数据吗?
不,PsdImage.Load() 解析文档头、图层元数据和资源,而不解码或渲染像素数据。
我可以将 PSD 文件转换为其他图像格式吗?
不。此库仅加载、检查并保存 PSD/PSB 文档——它不渲染像素数据,也不转换为其他图像格式。
API Reference 摘要
| 类/方法 | 描述 |
|---|---|
Image.Load(string) / Image.Load(Stream) | 加载 PSD 或 PSB 文档 |
PsdImage.Save(string) / PsdImage.Save(Stream) | 保存文档 |
PsdImage.Width / Height / BitsPerChannel / ColorMode / Version / Compression / Size / IsFlatten | 文档头部属性 |
PsdImage.ImageResources | 已解析的图像资源块(只读) |