PhotoCraft:纯 Rust 净室重写 Photoshop 的开源实验
阅读时间: 大约 10 分钟
PhotoCraft:纯 Rust 净室重写 Photoshop 的开源实验

2026 年 9 月,ArtCraft 团队在 GitHub 上开源了 PhotoCraft——一个用纯 Rust 净室重写的 Adobe Photoshop 替代品。仓库建立不到两周 star 数突破三万八千,迅速登上 GitHub Trending。它不使用 Electron、不内嵌 WebView,而是用 wgpu 做 GPU 合成,引擎可编译成 WebAssembly 在浏览器里跑。本文基于其官方 README 与文档,分析它的技术机制、PSD 兼容度数据以及官方自己标注的局限。
一、背景:为什么要重写 Photoshop
Adobe Photoshop 是数字图像处理的事实标准,但它存在几个长期被诟病的问题:闭源、订阅制、重量大、不开机联网就不能用,且对自动化脚本和 AI Agent 不友好。与此同时,开源图像编辑器(GIMP、Krita)虽然功能丰富,但在 PSD 兼容性、GPU 合成性能和 UI 一致性上始终与 Photoshop 有差距。
ArtCraft 团队的思路是:不做”又一个 GIMP”,而是从公开规范出发,净室实现(clean-room)一个行为尽量贴近 Photoshop 的原生应用——菜单、快捷键、面板位置都保持用户肌肉记忆不变,但底层用 Rust 重写,保证原生性能、跨平台和可被 Agent 驱动。
二、是什么:一个命令驱动的图像编辑引擎
PhotoCraft 的定位不是”Photoshop 克隆”那么简单。它的核心设计是引擎与 UI 分离:
- 纯数据文档模型 + 命令引擎,上面只套一层薄的 egui UI;
- 每个菜单项、工具、对话框都注册为一个命令,总计 500+ 个命令;
- UI、CLI、JSON 控制通道和 MCP Server 调用的是同一套命令注册表。
这意味着用户在界面上点的每一下,脚本和 AI Agent 也能做。官方提供的 headless 示例:
photocraft-cli run wave.psd \
--cmd filter.sharpen.smartSharpen --params '{"amount":80}' \
--cmd layer.newAdjustmentLayer.curves --params '{"points":[[0,0],[64,48],[192,212],[255,255]]}' \
--out wave-final.png桌面端还提供 loopback-only 的控制通道(--control),可以检查 UI 状态、用指针事件驱动工具、截取离屏画面。README 里每一张截图都是通过这个控制通道渲染出来的。
三、技术机制:双合成器 + 写时复制瓦片

根据官方 README 的”Under the hood”章节,架构要点如下:
| 层次 | 实现 |
|---|---|
| 文档模型 | 纯数据,不依赖 UI |
| 命令引擎 | 500+ 命令统一注册表 |
| CPU 合成器 | 作为参考 oracle(测试基准) |
| GPU 合成器 | wgpu(Metal / Vulkan / DX12 / WebGPU) |
| 瓦片存储 | 256×262 稀疏瓦片,写时复制(CoW) |
| 图层效果缓存 | 按图层状态缓存 effect map |
| 跨平台编译 | 整个引擎 + UI 编译为 WebAssembly |
| 测试 | 1700+ 测试,含 PSD 往返、合成器 oracle 对比 |
CPU 合成器和 GPU 合成器互相测试——这是保证渲染正确性的关键工程手段。大半径模糊使用跨多核的运行求和 box passes,官方称半径 180px 的高斯模糊在 3.6MP 图像上耗时不到一秒。
四、功能覆盖面:67 个工具与 PSD 兼容数据

官方 README 列出的功能规模:
| 维度 | 官方数据 |
|---|---|
| 工具数量 | 67 个(含画笔、选区、钢笔、形状、文字等) |
| 混合模式 | 27 种 Photoshop 混合模式 + 6 种 Paint.NET 变体 |
| 调整层 | 16 种(Curves、Levels、Vibrance、Hue/Sat、黑白、通道混合器等) |
| 色彩深度 | RGB / 灰度 / CMYK / Lab,8/16/32 bit 每通道 |
| PSD 往返 | psd-tools 测试集 307/309 文件重存后渲染一致 |
| 形状层 | 自有测试集 116/116 与 Photoshop 像素一致 |
| 测试数 | 1700+ |
| Crate 数量 | 24 个 Rust crate |
PSD 支持是一个独立 crate(photocraft-psd),从 Adobe 公开规范实现。官方特别说明:重存的文件不是字节级相同——PhotoCraft 会重写图像资源、图层记录和合成数据;只有独立的 photocraft-psd crate 在不经过文档模型时才能做到字节级还原。这是一个诚实的口径说明。
格式支持方面,除 PSD/PSB 外,还读写分层 TIFF、Paint.NET PDN3、OpenRaster(Krita/GIMP 互通),只读 Krita .kra 和 Affinity 文档。HEIC 为只读,AVIF 仅写,AVIF 解码和 JPEG XL 暂不可用。
五、评测方法的偏向
PhotoCraft 的”兼容性”数字主要来自两个来源:
- psd-tools 开源测试集:这是社区维护的真实 PSD 文件语料,覆盖面有限,偏向旧版和简单文件;
- 自有 oracle PSD:官方自己用 Photoshop 制作的对照文件,覆盖渐变插值(Classic/Perceptual/Linear)、图层效果、形状描边、裁剪和填充不透明度。
需要注意的是:官方承认”每个 Photoshop 菜单项都接到了命令”衡量的是接线而非行为正确性。15 个工具仍然缺失,AI/生成式功能完全空白,专业排版深度和插件兼容性也未实现。307/309 的通过率听起来很高,但测试集本身是否覆盖真实工作中的复杂 PSD(智能对象嵌套、变量数据、3D 图层)是另一个问题。
六、客观分析:优势与局限
优势:
- 纯 Rust + wgpu 原生性能:无 Electron 开销,启动快、内存占用低;
- Agent 原生设计:CLI / JSON / MCP 三通道统一,这是 Photoshop 完全不具备的自动化能力;
- WebAssembly 编译:同一套引擎可在浏览器里运行,无需安装;
- MIT/Apache 双许可:可自由商用和二次开发;
- 跨平台:macOS / Windows / Linux / FreeBSD / Web 全平台覆盖。
局限(官方自认):
- 早期 alpha:官方明确声明”不是日常专业工作的 Photoshop 替代品”;
- 15 个工具缺失:部分 Photoshop 功能尚未实现;
- 无 AI/生成式功能:生成式填充、神经滤镜等完全空白;
- 排版深度不足:文字排版的专业功能仍在建设;
- 无插件生态:Photoshop 庞大的第三方插件生态无法复用;
- Wayland 拖拽暂不可用:依赖的 winit 0.30 尚未支持 Wayland DnD。
七、适合谁关注
- 需要 PSD 批量处理的开发者:通过 CLI/MCP 做自动化图像流水线;
- 对 Photoshop 订阅制不满的个人用户:可作为轻量替代试用,但不要指望无缝迁移;
- Rust 图形引擎学习者:双合成器架构、CoW 瓦片、命令模式都是很好的工程参考;
- AI Agent 工具链开发者:MCP Server 设计值得参考。
它不适合:依赖 Photoshop 插件、需要生成式 AI 功能、或在生产环境处理复杂商业 PSD 的专业工作室。