如何在 Python 中保存和导出 PSD 文档

如何在 Python 中保存和导出 PSD 文档

本指南展示了如何将已编辑的文档保存到文件路径、保存到打开的流,以及随后如何释放已加载的图像。PsdImage.save 是写回文档的唯一公共入口点——它接受文件路径或已经打开的可写流。实际进行字节编码的底层节写入器是内部实现细节,用户不需要直接调用它。

分步指南

步骤 1:安装软件包

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

步骤 2:导入所需类

PsdImage 是本指南示例唯一需要的类:

from aspose_psd_foss.psdimage import PsdImage

步骤 3:保存到文件路径

加载文档,进行编辑,然后将其保存回文件路径:

image = PsdImage.load("input.psd")
image.layers[0].is_visible = False
image.save("output.psd")

步骤 4:保存到打开的流

使用流而不是路径进行保存后,流会保持打开状态——由您决定何时关闭它:

with open("output.psd", "wb") as stream:
    image.save(stream)

步骤 5:释放图像

在完成后释放已加载的 PsdImage 所占用的资源:

image.dispose()

常见问题及解决方案

RuntimeError: PsdImage has been disposed. 在调用时 save. 图像已被释放(通过 dispose() 或一个 with 已退出的块)在 save 被调用之前。调用 save 在释放之前。

PsdSaveException 关于 Pascal 字符串长度。 字符串值超过 255 字节 — 请参见 处理 PSD Core 异常 and Troubleshooting.

在保存时无法强制使用 PSD 或 PSB 容器。 没有公开的 API 来选择输出容器格式——保存时总是镜像文档加载时的格式(is_large_document / is_psb)文档加载时的格式。如果需要不同的容器格式,此 FOSS 构建中没有受支持的转换路径。

常见问题

将数据保存到流后会关闭该流吗?

不——当你将流传递给 save 时,流在之后保持打开状态,您可以自行管理其生命周期(参见步骤 4)。相反,保存到文件路径时,文件会在内部打开并关闭。

我可以直接调用内部节写入器,而不是使用 save 吗?

不——节级写入器是由 PsdImage.save 调用的内部实现细节。没有文档化、受支持的方式在调用 save 于 PsdImage 实例之外写入文档。

另请参阅

 中文