故障排除 Aspose.PSD FOSS for Python

故障排除 Aspose.PSD FOSS for Python

故障排除 Aspose.PSD FOSS for Python

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


加载问题

PsdLoadException 出现关于不受支持版本的消息

文件声明的 PSD 版本字段既不是标准 PSD,也不是大文档 PSB 值。加载前请确认该文件是一个真实且未损坏的 PSD/PSB 文档:

try:
    image = PsdImage.load("input.psd")
except PsdLoadException as ex:
    print(f"Not a valid PSD/PSB file: {ex}")

PsdLoadException 关于段长度超出边界的提示

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


保存问题

PsdSaveException 关于 Pascal 字符串长度

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

layer.name = layer.name[:255] if len(layer.name) > 255 else layer.name
image.save("output.psd")

编辑问题

NotSupportedException 在设置属性时

在此 FOSS 构建中,多个属性为只读。在 PsdImage 上:active_layer、image_resources、global_layer_resources、has_transparency_data。在 Layer 上:channel_information、layer_mask_data、layer_blending_ranges_data。将这些视为仅获取——不要对其赋值。

设置后图层不透明度看起来不正确

Layer.opacity 通常是 0-255 的取值,而不是 0.0-1.0 的小数或百分比:

layer.opacity = 200  # approximately 78% opaque, not 200%

层删除未生效

PsdImage.layers 在集合层面有可用的 setter,但不能直接在原位删除单个列表元素——请重新分配整个过滤后的列表:

image.layers = [l for l in image.layers if l.name != "Unwanted Layer"]

安装问题

未找到软件包

确认软件包的精确标识:

git clone https://github.com/aspose-psd-foss/Aspose.PSD-FOSS-for-Python.git
cd Aspose.PSD-FOSS-for-Python
# No packaging manifest is published yet -- run from this folder,
# or add it to PYTHONPATH:
export PYTHONPATH=$PWD:$PYTHONPATH

诊断检查清单

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

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

另请参阅

 中文