故障排除 Aspose.PSD FOSS for .NET

故障排除 Aspose.PSD FOSS for .NET

故障排除 Aspose.PSD FOSS for .NET

本页涵盖了使用 Aspose.PSD FOSS for .NET 加载、检查和保存 PSD/PSB 文档时遇到的最常见问题。


加载问题

PsdLoadException 显示不受支持版本的消息

文件声明的 PSD 版本字段既不是标准 PSD,也不是大文档 PSB 值。请在加载之前确认该文件是完整、未损坏的 PSD/PSB 文档:

try
{
    using var image = PsdImage.Load("input.psd");
}
catch (PsdLoadException ex)
{
    Console.WriteLine($"Not a valid PSD/PSB file: {ex.Message}");
}

PsdLoadException 报告节长度超出边界

文件的内部长度字段与实际大小不一致——这通常表示文件被截断或损坏,而不是使用了不受支持但本身有效的结构。请从源应用程序重新导出文件并重试。


保存问题

PsdSaveException 关于 Pascal 字符串长度

字符串值 — 通常是图层或资源名称 — 超过 255 字节,这是 PSD Pascal 字符串字段能够编码的最大长度:

layer.Name = layer.Name.Length > 255 ? layer.Name[..255] : layer.Name;
image.Save("output.psd");

编辑问题

NotSupportedException 在设置属性时

在此 FOSS 构建中,若干属性为只读。 在 PsdImage:ActiveLayer、ImageResources、GlobalLayerResources、HasTransparencyData。 在 Layer:ChannelInformation、LayerMaskData、LayerBlendingRangesData。 将这些视为仅获取 — 请勿对其赋值。

设置图层不透明度后显示异常

Layer.Opacity 是一个在 0-255 范围内的 byte,而不是 0.0-1.0 的小数或百分比:

layer.Opacity = 200; // approximately 78% opaque, not 200%

层删除未生效

PsdImage.Layers 在集合层面有可用的 setter,但单个数组元素不能直接就地删除——请重新赋值整个过滤后的数组:

image.Layers = image.Layers.Where(l => l.Name != "Unwanted Layer").ToArray();

安装问题

未找到软件包

确认软件包的确切身份:

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

诊断检查清单

在提交支持工单之前,请先检查以下清单:

  1. 确认文件确实是 PSD/PSB — 一个 PsdLoadException 关于不受支持的版本通常意味着文件并非真正的 PSD/PSB 文档。
  2. 检查 NotSupportedException — 您可能正在设置上述列出的 7 个只读属性之一,而不是读取它。
  3. Verify Opacity 在 0-255 范围内,而非 0.0-1.0 或 0-100。
  4. 保持字符串值在 255 字节以下 在保存之前,为避免 PsdSaveException.
  5. Call image.Save 每次编辑后 — 对 a 的更改 Layer 实例在文档保存之前不会持久化。

另请参阅

 中文