PSD 文件可以在编辑器中打开,却仍可能显示异常:差异可能涉及蒙版、文本、图层效果或叠放顺序。一种验证结果的方法,是将重新合成的图像与 PSD 文件中内嵌的合并图像进行比较。2026 年 10 月 11 日发布的 PhotoCraft v0.7.0,为我们提供了一个开源 Rust 图形编辑器的实例,借此探讨这种工程方案。

此次发布列出了画笔、选区、蒙版、OpenRaster 导入和编辑器其他部分的改动。对开发者而言,项目公开的文档尤其值得关注:其中介绍了 PSD 导入测试、合成器比较,以及用于可复现验证的文件集。
PSD 文件内含可供比较的基准图像
多图层 PSD 文件包含图层结构和文档的合并图像。PhotoCraft 会渲染各个图层,然后将结果与文件内嵌的合成图像进行比较。此类测试可以检验程序在处理文本、调整图层、效果及格式其他功能时,能否准确还原文档的外观。
PhotoCraft 架构说明将这种方法称为“合成器预言机”。测试文档列出了三组 PSD 文件:团队使用 Photoshop 创建的 256 个文件、来自 psd-tools 和 ag-psd 测试集的 170 个文件,以及 psd-tools 的另一组 309 个文件。这些文件集按固定版本下载,并通过校验和验证。
格式开发者可以根据测试要回答的问题,将检查分门别类。结构解析检查文档是否成功读取;打开与保存循环测试检查数据是否保留;合成图像比较则检查视觉结果还原得是否准确。PhotoCraft 文档同时列出了针对未修改文件的字节稳定性检查,以及与 PSD 内嵌合成图像的比较。
CPU 合成器作为对照实现
项目将 CPU 合成器描述为导出和测试的基准路径;基于 wgpu 的 GPU 合成器则在画布上执行相同的操作计划。架构文档称,结果会按 8 位输出最高 1/255 的容差进行比较,并在持续集成(CI)中检查 CPU 与 GPU 的差异,其中包括使用软件图形适配器进行的测试。
GPU 适用于交互式画布,但硬件路径能否使用取决于文档和运行环境。指南指出,多通道文档以及尺寸超过纹理限制的区域会由 CPU 合成器处理;GPU 设备丢失时,画布也会切换到 CPU。这些是不同路径之间切换的具体条件,并不意味着所有设备都具有统一的运行速度。
这种通用模式也适用于其他计算系统:让可验证的基准实现与优化路径并存,并用相同输入运行两者。数据库可以让简单解释器与优化引擎相互对照,媒体处理则可以比较软件路径与硬件加速路径。比较能够揭示结果差异;固定输入并明确可接受的差异标准后,结果才具有可复现性。
如何将这种方案落实为实际测试
- 构建规模适中、类型多样的测试集。加入含蒙版、文本、组、透明度、效果和不同色彩模式的文件。记录文件来源和测试集版本,确保后续运行使用相同输入。
- 选择基准并设定容差。对于 PSD,可以将结果与文件内嵌的合并图像进行比较。确定允许的误差;如果应用需要,也应单独检查尺寸、色彩配置文件和 Alpha 通道。
- 分别测试导入、保存和渲染。可以通过独立测试检查图层解析、保存后重新打开,以及图像与基准的匹配程度。这样更容易确定错误出现在哪个阶段。
- 使用不同后端运行相同案例。在相同文档上比较 CPU 和 GPU 的结果,并纳入跨瓦片边界及带有效果的测试。保留输入和视觉差异,以便复现回归问题。
- 记录性能测量条件。注明文档尺寸、图层数量、硬件和缓存状态。PhotoCraft 文档提供了运行单项测试和比较合成器的命令;其中的测量数据对应特定配置和场景。
PhotoCraft 开发指南介绍了检查 PSD 文件集、视觉差异及不同合成路径行为的命令。它可以作为研究编辑器测试基础设施的具体起点;阅读文档中的性能数据时,应结合其中标明的输入和硬件配置。
PhotoCraft 案例说明了什么
PhotoCraft v0.7.0 更新了编辑器本身,而项目文档则展示了一项独立的工程实践:使用基准 PSD 验证合成效果,并以 CPU 实现作为 GPU 路径的对照。对于编辑器、转换器及其他处理复杂文件的工具开发者,关键启示很简单:分别测试读取、保存和视觉结果,并使用固定输入将加速实现与基准版本进行比较。这样,兼容性和性能就能成为可验证的软件属性。