版本:小雨修图 1.4.1(2026-10-19) · 许可:MIT(见 LICENSE)
双击 小雨修图.exe 即可启动,无需安装、无需联网。
(首次启动如出现 Windows 安全提示,选择"仍要运行"即可;应用为本地离线运行。)
Photoshop 风格的图层图像合成器,在 Windows 本地独立实现,操作方式对齐 Photoshop,
并补齐了大量 Photoshop 级专业功能:
变亮 / 滤色 / 颜色减淡 / 线性减淡(添加)/ 浅色 / 叠加 / 柔光 / 强光 /
亮光 / 线性光 / 点光 / 实色混合 / 差值 / 排除 / 减去 / 划分 / 色相 / 饱和度 /
颜色 / 明度
渐变映射、颗粒、反相、黑白、色彩平衡、高斯模糊、动感模糊、添加杂色、
自然饱和度、白平衡、分离色调、HSL 八色分区
色调对比、USM 锐化、浮雕、查找边缘、油画;另有 导入 LUT(.cube 全图调色)、天空替换
快速选择、裁剪、吸管、画笔/橡皮、污点修复(块匹配填充)、修复画笔、仿制图章、
加深减淡、涂抹、模糊、渐变、形状(矩形/圆角/椭圆/直线)、文字(含段落文字框)、
钢笔(贝塞尔路径 → 选区,可编辑手柄)、抓手、缩放
描边(外/内)、颜色叠加、渐变叠加
Warp 变形(3×3 网格)**
导入图像(PNG/JPEG/WebP/GIF/BMP/SVG/HEIC/HEIF/AVIF/JXL(JPEG XL)/TIFF,自动按 EXIF 摆正、保留拍摄信息与色彩配置;
另支持相机 RAW 直接导入:.cr2/.cr3/.nef/.arw/.raf/.orf/.rw2/.pef/.srw/.dng/.gpr 等,
内置 LibRaw 本地解码(离线、不联网),自动去马赛克出彩色(相机白平衡 + sRGB),解码在独立子进程跑、不卡界面;
RAW 的拍摄参数(相机/镜头/ISO/快门/光圈/焦距/拍摄时间)会自动进「图像信息 / EXIF」面板,
导出 JPEG 时照常写回;白平衡/亮度补偿/半尺寸解码可在 设置 → RAW 导入 里调,批量处理管线同样吃 RAW)、
新增滤镜(1.4.0):清晰度(局部对比)、去薄雾(灰蒙蒙远景一键通透)、柔光/奥顿(梦幻柔焦)、胶片颗粒(可复现)——预设库里也加了「通透风景」「梦幻人像」两套。
人像:滤镜 > 高低频磨皮(皮肤变匀但保留毛孔纹理),也可在「一键人像」里把磨皮方式切到「保纹理(高低频)」;选择 > 选择肤色区域(人像) 一键选中皮肤,之后磨皮/调色/锐化/液化只作用于皮肤。
人像局部工具(滤镜 菜单,强度可调 + 实时预览 + 可撤销,有选区只处理选区):牙齿美白(只压"亮且偏黄"的像素,嘴唇不动)、眼睛提亮(虹膜细节增强 + 瞳孔提亮)、肤色统一(只平滑色度、保留亮度与纹理)。
液化预设:滤镜 > 液化 弹窗里有 瘦脸 / 大眼 / 收下巴 / 缩鼻头 四个一键预设,以当前选区为中心(没选区用画面中心);位移量按区域大小自动限制,不会一点就变形过头。
人像工作流:文件 > 批量处理管线 内置预设「人像精修出片:高低频磨皮 + 肤色统一 → 长边 1920 → JPEG 92」,选一个文件夹就能整批跑;管线的人像步骤也支持「肤色统一」滑杆与「磨皮方式(柔和 / 保纹理)」。
修复画笔:高低频式修复——低频取源色、高频保留目标皮肤纹理,修完不是"糊上去一块皮"。
导出合并图像(PNG / JPEG / WebP / PSD(多图层)/ PDF / HEIC / AVIF;导出预览里可选输出尺寸:原尺寸 / 长边 2560 / 长边 1920(微信·朋友圈) / 长边 1080(手机屏·头像),也支持 2x/3x 放大;长边预设只缩不放,文件名自动带 _60% 这类比例标记)、
PSD 颜色模式:导入支持 RGB / 灰度 / 索引色 / CMYK(非 RGB 会自动转成 RGB,导入提示里会注明);Lab / 位图 / 双色调 / 多通道 会明确提示让在 Photoshop 里转 RGB。图层效果(投影/外发光/内阴影/内发光/描边/颜色叠加/渐变叠加/斜面浮雕/光泽)在导出 PSD 时会烘焙进像素(提示里会显示"N 个图层效果已烘焙"),不会丢样式。
批量导出(多尺寸)、批量处理管线(预设可保存/导入导出,支持递归、并发、失败重试)、
复制合并图像、HDR 合成(包围曝光)、全景拼接(圆柱/球面/直线投影)、证件照/头像模板(含 6 寸/A4 拼版)
切工具;Ctrl+Z/Y/C/V/X/T/D/A 等编辑快捷键)、Ctrl+F 命令搜索、Ctrl+滚轮缩放
manifest.json(v11)+ images/(图层 PNG 与蒙版灰度 PNG)+ QuickLook/Preview.jpg| 按键 | 功能 | |---|---| | V / M / L / W / C / I / B / S / G / U / T / H / Z / P | 移动 / 选框 / 套索 / 魔棒 / 裁剪 / 吸管 / 画笔 / 仿制图章 / 渐变 / 形状 / 文字 / 抓手 / 缩放 / 钢笔 | | J(循环) / O | 污点修复 ↔ 修复画笔 / 加深减淡 | | Ctrl+Z / Ctrl+Y | 撤销 / 重做 | | Ctrl+C / Ctrl+V / Ctrl+X | 复制图层 / 粘贴(系统剪贴板有图就贴图,如微信/QQ 截图)/ 剪切(有选区裁掉选区像素,无选区把整层放进剪贴板) | | Ctrl+T | 自由变换;拖角点=缩放,Ctrl=扭曲,Ctrl+Shift=斜切,Ctrl+Alt+Shift=透视 | | Ctrl+D / Ctrl+Shift+I | 取消选区 / 反选 | | Ctrl+A | 全选 | | Ctrl+Shift+E | 合并可见图层 | | Ctrl+E | 向下合并 | | Ctrl+Alt+G | 创建裁剪蒙版 | | Ctrl+F | 命令搜索 | | Ctrl+滚轮 / Alt+滚轮 | 画布缩放(以鼠标位置为中心) | | 空格+拖动 | 平移画布 | | \(按住) | 临时看原图,松开回到当前状态 | | [ / ] | 画笔大小 | | 方向键 | 微移图层/选区 | | F6 | 羽化选区 | | Ctrl+Alt+R | 选择并遮住(选区边缘精修) | | Q | 快速蒙版模式(再按一次应用为选区) | | F | 全屏 |
源码位于 Windows版\ 目录:Electron 主进程 main.js、预加载 preload.js、渲染引擎 app/js/(30+ 个模块,
含 hdr.js HDR 合成、panorama.js 全景拼接、heif.js HEIC/AVIF 导出、psd.js PSD 读写、pipeline.js 批量管线、
idphoto.js 证件照、autosave.js 自动备份、heic.js HEIC 解码、raw.js 相机 RAW 解码、tiff.js TIFF 解码、jxl.js JPEG XL 解码等)、
样式 app/css/、内置解码库 app/vendor/(libheif / libraw / tiff / jxl)。
独立运行包位于本目录(小雨修图.exe + resources/app)。修改 resources/app/ 下的源码后重启小雨修图.exe 即生效;
测试台在 tests/bughunt/(300+ 条真实端到端用例),一键同步脚本 tests/sync-to-runtime.js。
没有时会自动改导出 AVIF。详见 帮助 →「HEIC 导出需要什么」
RAW 的主要拍摄参数(相机、镜头、ISO、快门、光圈、焦距、拍摄时间)会保留进「图像信息 / EXIF」并随 JPEG 导出写回,
但这是按这些参数重新合成的标准 EXIF 段——RAW 里的 GPS、相机校准等更深的信息暂不引入。超 4000 万像素的 RAW
会自动改用半尺寸解码(长宽各减半)。解码库约 1.4MB,只在第一次导入 RAW 时才加载,不影响启动速度
LICENSE)。可以自由使用、修改、再分发,只需保留版权与许可声明。 ① libheif-js(LGPL-3.0,libheif 的 Emscripten 构建),用于 HEIC 解码,
放在 resources/app/app/vendor/libheif/。它未修改源码、以独立文件形式通过 <script> 动态加载(用户可自行替换),
只在导入 HEIC 时才加载。把它删掉即可完全移除(HEIC 导入会变成"这个格式暂时打不开"的提示,其它功能不受影响)。
② LibRaw(WASM 构建)(LibRaw 本体 LGPL-2.1/CDDL 双协议,JS 封装 ISC),用于相机 RAW 解码
(.cr2/.cr3/.nef/.arw/.dng 等),放在 resources/app/app/vendor/libraw/。未修改源码、以独立文件形式
由独立子进程(raw-worker.js)在运行时动态加载(用户可替换成自己编译的版本,满足 LGPL 的"可替换"要求),
只在第一次导入 RAW 时才读。把它删掉即可完全移除(RAW 导入会变成"RAW 解码库缺失"的提示,其它功能不受影响)。
声明与来源见 app/vendor/libraw/README.md 与 第三方组件与许可证.md。
③ UTIF.js + pako(均为 MIT),用于 TIFF 解码(.tif/.tiff,含 pako 是为了解 Deflate 压缩 TIFF),
放在 resources/app/app/vendor/tiff/,未修改源码、以独立文件形式在第一次导入 TIFF 时由 <script> 动态加载。
把它删掉即可完全移除(TIFF 导入会变成"找不到 TIFF 解码库"的提示,其它功能不受影响)。声明与来源见 app/vendor/tiff/README.md。
④ @jsquash/jxl(libjxl)(Apache-2.0),用于 JPEG XL 解码(.jxl),放在 resources/app/app/vendor/jxl/(jxl_dec.wasm 约 830KB + 胶水 + 许可原文)。未修改解码逻辑(胶水只做了「ESM→全局脚本」三处机械改动,逐条列在 app/vendor/jxl/README.md),以独立文件形式存在,第一次导入 .jxl 时由主进程读取。删掉该目录并移除 app/js/jxl.js 即可完全移除。
⑤ AVIF 导入没有额外解码组件——浏览器内核自带。
不随本软件分发——这也是刻意规避 x265(GPL-2.0)传染性的做法;没有 HEVC 编码器时自动导出 AVIF(AV1 编码由 Chromium 自带)。
LICENSE、LICENSES.chromium.html。(那份 20 MB 的清单里会出现 GPL/LGPL/AGPL 字样,那是 Chromium 自己用到的组件及其协议全文,属于 Electron 官方的合规材料、原样附带,不是本软件额外引入的代码。)
第三方组件与许可证.md。小雨修图.exe 运行,不需要安装。install.bat —— 会复制到 %LOCALAPPDATA%\Programs\XiaoYuXiuTu,并在桌面和开始菜单创建快捷方式(当前用户安装,不需要管理员权限)。 卸载运行同目录的 uninstall.bat,只删程序,不删你的项目和设置。
%APPDATA%\小雨修图,升级/覆盖安装都不会丢。.dmg 必须在 Mac 上构建,见 build/macOS-构建说明.md 或 GitHub Actions 工作流 .github/workflows/build-mac.yml。这个软件是作者一个人在做的小项目,功能基本按大家实际用出来的反馈排优先级。
用着别扭、缺功能、界面哪里不顺眼,都可以直接说:
写的时候带上「想做什么操作 + 点了哪里 + 发生了什么 + 图片格式和大概尺寸」,问题会好定位很多。做不了的会直接告诉你,能做的会排进下个版本。
菜单栏 插件 里有「插件使用说明」——第一次用插件建议先看一遍(软件里可以直接打开)。
| 插件 | 位置 | 用法 | |---|---|---| | **自动色阶** | 滤镜 → 自动色阶(插件,可撤销) | 按直方图自动拉黑白场,灰片一键通透;只改当前图层,Ctrl+Z 可撤销 | | **加边框** | 滤镜 → 加边框(插件) | 弹窗三个参数:边框宽度(短边 %,0.5~40)、边框颜色、圆角(可选,短边 %);画在当前图层内部,可撤销 |
plugin.json 和它指向的脚本(默认 index.js)%APPDATA%\小雨修图\plugins\<插件id>,或:插件 → 插件管理器 → 安装插件 选中该文件夹plugin.json 示例:
```json
{
"id": "com.example.myfilter",
"name": "我的滤镜",
"version": "1.0.0",
"author": "你的名字",
"description": "示例:把画面变成黑白",
"main": "index.js"
}
```
index.js 示例(加一个「转黑白」命令):
```js
(function (api) {
api.addMenu({
label: '转黑白(插件)',
menu: '滤镜',
action: function () {
api.applyToActive(function (canvas) {
var ctx = canvas.getContext('2d');
var img = ctx.getImageData(0, 0, canvas.width, canvas.height);
var d = img.data;
for (var i = 0; i < d.length; i += 4) {
var g = d[i] * 0.299 + d[i + 1] * 0.587 + d[i + 2] * 0.114;
d[i] = d[i + 1] = d[i + 2] = g;
}
ctx.putImageData(img, 0, 0);
});
}
});
})(api);
```
常用接口:api.addMenu({label, menu, action})、api.addFilter(name, fn)、api.applyToActive(fn)(自动进撤销栈)、api.getActiveCanvas()、api.selection()、api.dialog({title, fields, onOk})、api.notify(msg)、api.storage。
> 安全:插件在沙箱里跑,不能读写文件、不能联网,只能改当前画布和加菜单;启用外部插件前请确认来源可信。