介绍
官方网站:https://github.com/storytold/photocraft
近日,ArtCraft 项目旗下图像编辑工具 PhotoCraft 更新早期 Alpha 版本。这款完全使用 Rust 语言开发的开源图像编辑器,面向 Windows、macOS、Linux 多平台,完全免费,能够读写多层 PSD、PSB 工程文件,界面、菜单布局、快捷键高度对标 Photoshop,给用户提供了一款本地运行的图像处理新选择。
软件截图

软件特点
图层蒙版、无损非破坏性编辑
软件完整复刻 Photoshop 的操作逻辑,内置 34 种编辑工具、27 种图层混合模式,覆盖专业图像编辑大量基础能力:
- 支持图层与图层组、像素蒙版与矢量蒙版、图层样式、可编辑文字与矢量图形;
- 提供 16 种调整图层,包含曲线、色阶,支持智能对象与可编辑智能滤镜,实现完整非破坏性编辑,原始像素不会被修改,后期可以随时调整、关闭各类效果;
- 内置 70 余种带实时预览的滤镜;
- 本地完成画面主体物体选择,图片无需上传至外部服务器;
- 色彩管理完备,支持 RGB、CMYK、Lab、灰度色彩模式,每通道 8/16/32 位深度,兼容 ICC 色彩配置文件与屏幕软打样功能。
软件不基于 Electron 网页框架构建桌面界面,采用原生 GPU 渲染,Windows 使用 DirectX 12、macOS 调用 Metal、Linux 使用 Vulkan,网页版本依靠 WebGPU;0.5.0 版本新增渲染容错机制,当 GPU 渲染异常时,可自动切换至 CPU 模式保障软件继续运行。
兼容性测试显示,在 psd-tools 测试集 309 个样本文件中,307 个文件二次保存后渲染结果正确。但开发者提醒:软件会重写文档内部结构,保存后的PSD文件无法做到与原始文件字节完全一致,测试数据也不等于所有功能效果都和 Photoshop 完全等同。
尚不能完全替代专业 Photoshop 工作流
官方文档反复强调,现阶段早期 Alpha 版本尚不适合作为专业工作的日常主力软件,存在不少短板:
- 不兼容 Adobe 传统 .8BF 插件、ExtendScript、UXP 脚本生态,项目改用 WebAssembly 开发自有插件体系;
- 在部分工具、排版文字、高级专业工作流上存在功能缺口;
- 第三方测试反馈,打开大型 PSD 文件时内存占用较高;
- 滤镜、部分操作的运行效果与原版 Photoshop 仍存在差异。
多平台安装包,支持命令行批量处理
官方发布页提供全平台预编译包,覆盖主流系统与芯片架构,同时还有 WebAssembly 网页版源码可供自行部署:
| 平台 | 硬件架构与系统要求 | 提供下载格式 |
|---|---|---|
| Windows | x64/x86(Win10+);ARM64(Win11 ARM) | MSI安装包、便携ZIP版本 |
| macOS | macOS11以上,Intel/Apple硅通用 | 通用DMG镜像,附带CLI命令行ZIP包 |
| Linux | x86_64、ARM64,glibc2.35及以上 | AppImage、DEB、RPM、TAR.GZ、Flatpak |
| FreeBSD | FreeBSD14 x86_64 | TAR.GZ |
| 浏览器 | WebAssembly | 静态网页ZIP包 |
Windows 便携版会在程序同级目录生成 PhotoCraftData 文件夹存放配置、预设、自动恢复文件;写入失败则回退到用户个人目录。
PhotoCraft 还开放强大自动化能力,支持命令行 CLI、JSON 控制通道、MCP 服务器,脚本、AI 智能体都可以调用软件内核,实现批量图片处理。例如可以直接执行命令,对整个文件夹批量套用预设编辑动作:
photocraft-cli batch –actions grade.json –in ./raw –out ./graded
总结
PhotoCraft 最大亮点在于本地运行、开源免费、完整图层系统、原生读写 PSD 工程、跨平台原生 GPU 加速。尽管还处在 Alpha 开发阶段,专业生产环境使用前务必做好原始工程备份,需要自行验证自家 PSD 文件、常用工具是否适配,但对于普通修图爱好者、预算有限的设计从业者,它是一个值得体验的 Photoshop 替代方向,后续版本更新也值得持续关注。
更新日志
v0.12.0
docs: add SonarCloud and CodeRabbit badges to README by @dylanmtaylor in #7429
Skip CodeRabbit reviews on Dependabot PRs by @echelon in #7991
Codecs: save DDS textures, uncompressed or BC1–BC3, with optional mipmaps (#1327) by @guillehr2 in #5993
Integration batch: 26 PRs from the known-issues list (#7973) on main by @aiongg in #8094
Group all selected layers from the Layers panel footer by @carterwsmith in #7225
Web: start when the server already inflated the app's gzip part (Apache mod_mime_magic) (#7639) by @Korg1ch in #7683
Give a new type layer a full Txt2 object and its own frame by @Silvertree2010 in #7773
Choose the graphics adapter on multi-GPU Linux machines (#1885) by @readtedium in #7813
Print: Portrait and Landscape in the Print dialog on Windows by @ToastyStoemp in #7847
Indexed GIF opens in Indexed Color with its colour table, as in Photoshop (#7886) by @Korg1ch in #7892
Preserve near-black ICC colors on the GPU canvas by @ha1des in #7964
fix(ui): wire video menu pickers/dialogs and fix Timeline Stop playback by @onicafe in #3223
Large documents: a gigapixel New Document draws without freezing (#4017) by @davidmann4 in #5111
perf(retouch): row-parallel Blur/Sharpen dabs, 2.6-3.3x faster strokes (#5426) by @JuanAntonioRC in #5499
Preserve editable clipboard contents when native reads fail by @jonathanwxh-cell in #5587
Snap: View › Snap off also disables smart-guide snapping (#5782) by @nrq6993-a11y in #5803
Batch: Format "Same" saves camera raws as PSD instead of failing (#5799) by @Higgs32584 in #5857
fix(tablet): support stylus barrel button and brush resize on Windows (#5905, #5364) by @Anim86 in #6195
Reveal newly created selections after hiding Extras by @jonathanwxh-cell in #6222
Windows: PhotoCraft starts without Windows.Data.Pdf.dll (#5884) by @Higgs32584 in #6395
macOS: list fonts activated outside the font folders (#6683) by @odgrim in #6693
fix(ui): disable Batch without a recorded action by @Elements2720 in #6711
Windows: maximized window lets an auto-hidden taskbar show (#4845) by @Higgs32584 in #6878
Pen: a finished path keeps its anchor squares on screen (#6884) by @Higgs32584 in #6920
Mixer Brush: Clean Brush empties the brush, and the automatic Load and Clean can be switched off by @dotCooCoo in #6939
Brushes: accept .abr files up to 1 GiB by @dgliwa in #7180
GPU startup: Auto on Windows leaves Vulkan out when an Intel adapter is present (#4) by @dotCooCoo in #7217
fix(psd): an edited type layer keeps its Txt2 object instead of a bare stub (#6968) by @Higgs32584 in #7220
Paragraph panel: grey the justify buttons on point text (#7713) by @hectorviov in #7728
Integration batch: 9 PRs on main by @aiongg in #8095
PSD: save Indexed Color, Bitmap and Duotone documents in their own mode by @switch87 in #4816
PSD: render constant RGB noise gradient fills by @Elvis33LE in #6272
perf(compose, gpu): many-layer composites, P60/P61 on the GPU 111 -> 28 ms by @ArintonAkos in #7566
perf(compose): Reuse bounded scratch and tone tables by @reneleonhardt in #7693
PSB save: 8-byte-length global blocks use the 8B64 signature, so Photoshop opens the file (#7937) by @Korg1ch in #7948
Type: keep superscript and subscript when a text layer is re-rendered (#5645) by @vangel76 in #5807
PSD: read split ("quilt") warps of placed layers, so Replace Contents keeps their curvature (#4398) by @thangnm93 in #6913
ci: switch to shared nix workflow from craft-common-actions by @dylanmtaylor in #6448
Integration batch: 86 PRs on main by @aiongg in #8271
PSD: read colours stored as HSB (#6774) by @davidmann4 in #6775
Apply Image: write into the targeted layer mask (#6780) by @davidmann4 in #6781
Droplets: carry the actions that Conditional steps call (#6804) by @davidmann4 in #6805
Guides: ruler guide snapping rebuilds its targets when snap options change (#6858) by @davidmann4 in #6859
CLI batch: skip shell-only Save and view steps inside played action sets (#6860) by @davidmann4 in #6861
Image Size: Resolution with Resample on keeps the print size in physical units (#6979) by @davidmann4 in #6980
Control: ui.set rejects zoom, rotation, center and dockWidth beyond f32 range (#6988) by @davidmann4 in #6989
Channels: Multichannel conversion keeps the targeted channel (#7002) by @davidmann4 in #7003
Keyboard Shortcuts: switching sets keeps action function keys (#7004) by @davidmann4 in #7005
Timeline: a longer duration moves a work area that reached the old end (#7006) by @davidmann4 in #7008
Crop: Color Samplers scale with a W x H crop (#7012) by @davidmann4 in #7013
Actions: deleting an action removes its function key (#7014) by @davidmann4 in #7015
Automation: doc.save rejects a bad quality instead of ignoring or clamping it (#7023) by @davidmann4 in #7024
Automation: place and layer/data-set export by index keep the active document (#7025) by @davidmann4 in #7026
Transform Selection: an unknown reference point is an error (#7027) by @davidmann4 in #7028
Lens Correction: smart filters keep the exact focal length (#7029) by @davidmann4 in #7030
Match Zoom: matched views stay within each document's zoom range (#7036) by @davidmann4 in #7037
Crop: the turn readout never shows -0.0° or -180.0° (#7040) by @davidmann4 in #7041
Conditional Mode Change: "gray" as a single source mode matches Grayscale (#7042) by @davidmann4 in #7044
Layer Style: gradient overlay and stroke scale stay within 10-150 % (#7047) by @davidmann4 in #7048
Perspective Crop: a drag without area leaves no crop box (#7061) by @davidmann4 in #7062
PSD: Hue/Saturation export writes each triplet in its own slot (#7065) by @davidmann4 in #7066
Merge to HDR Pro and merged duplicates: the Background layer is a ...
Puresys纯净系统-软件下载
