写了一个批量给图片加logo水印的工具

在日常的网站运营、电商上新或品牌推广工作中,我们经常需要给大量的实拍图、产品照加上品牌 Logo 水印。一张张用 PS 处理效率太低,而市面上的很多小工具要么画质压缩严重,要么不支持复杂的平铺和旋转。为了彻底解决这个痛点,我用 Rust + egui 开发了一款桌面端图形化程序——Watermark Tool(批量图片水印工具)。它不仅支持单点、平铺等多种复杂的布局引擎,还能利用多线程并发实现秒级批量导出,完美兼顾了高性能傻瓜式操作


🎯 核心功能亮点

1. 随心所欲的水印布局引擎

  • 单水印模式:预设 9 个锚点(左上 / 上中 / 右上 / 左中 / 中心 / 右中 / 左下 / 下中 / 右下),支持边距与 XY 方向的像素级微调。
  • 平铺全屏模式:提供标准网格(Grid)、砖墙交错(Brick)和对角线无缝(Diagonal)3 种防盗平铺策略,X/Y 轴间距可独立设置。
  • 任意角度旋转:支持水印 ±180° 旋转,轻松做出倾斜防盗效果。

2. 专业级的水印效果与画质控制

  • 完美透明度混合:0% ~ 100% 自由调节,Alpha 通道精确混合,不生硬。
  • 智能缩放:支持基于原图尺寸的百分比缩放,或强制指定绝对像素宽度。
  • Lanczos3 重采样:采用高质量重采样算法,确保缩放后的 Logo 依然清晰,告别模糊与锯齿。

3. 快如闪电的批量导出引擎

  • 多线程并发:基于 Rust 的 rayon 并行库,吃满你的多核 CPU,成百上千张图片瞬间处理完毕。
  • 智能命名冲突策略:支持自动重命名(追加 _wm 后缀)、覆盖同名或跳过,防止误操作。
  • 灵活格式转换:支持 PNG、JPEG、BMP、WebP 输入。导出时可保持原格式,或统一转换为 JPEG(质量可调)/ PNG 输出。

🖼️ 极简的交互界面

工具采用了经典的“左侧控制面板 + 右侧画布”布局。参数修改后右侧实时预览(自动缩放适配窗口),并配有原生的文件选择对话框和 Toast 提示,带给您丝滑的桌面端操作体验。

批量图片水印工具Watermark Tool 软件操作界面
Watermark Tool 实时预览与参数调节界面

📌 建议:水印图片推荐使用带透明通道的 PNG 格式,合成效果最佳。


🎮 6 步搞定图片批量加水印

  1. 第 1 步:选择水印图案 —— 导入你的品牌 Logo(推荐透明 PNG)。
  2. 第 2 步:导入待处理图片 —— 支持选择单张图片,或者直接选择整个文件夹(会自动递归遍历子目录)。
  3. 第 3 步:调整水印参数 —— 在左侧面板调节位置、平铺策略、透明度、缩放比例或旋转角度。
  4. 第 4 步:实时查看预览 —— 在右侧画布直接预览最终合成效果,所见即所得。
  5. 第 5 步:设置输出选项 —— 选择导出格式(JPEG/PNG)、压缩质量以及文件名冲突策略。
  6. 第 6 步:一键开始批量导出 —— 点击导出,通过实时进度条查看速度。完成后还会弹出包含成功/失败/跳过计数的详细报告。

🛠️ 开发者指南:单文件极简架构

如果您也是 Rust 爱好者,该项目同样是一个非常适合学习 egui 界面开发与图像处理的开源范本。项目源码约 1600 行,全部凝聚在 main.rs 单文件中,结构清晰。

技术栈一览

类别 核心库 用途
GUI 框架 eframe + egui (v0.28) 即时模式(Immediate Mode)跨平台桌面 UI
图像编解码 image + imageproc 负责多格式读写、仿射变换与 Alpha 混合
并发加速 rayon 充分发挥多核性能的并行批处理
系统交互 rfd + directories 原生文件对话框调用与跨平台用户配置持久化

Release 编译优化

项目在 Cargo.toml 中配置了极致的体积优化(开启了 lto = "fat"codegen-units = 1strip = truepanic = "abort")。最终编译出的 Windows 单文件 EXE 体积仅 5 ~ 8 MB,无任何外部 DLL 依赖,真正的绿色免安装,下载即用!


📌 支持的图片格式明细

格式 读取(Input) 导出(Output) 备注
PNG ✅ 支持 ✅ 支持 支持高质量透明通道混合
JPEG ✅ 支持 ✅ 支持 导出时可自由调节 1~100 的画质系数
BMP ✅ 支持 ❌ 需转换 导出时需统一转换为 JPEG 或 PNG
WebP ✅ 支持 ❌ 需转换 导出时需统一转换为 JPEG 或 PNG

欢迎前往 GitHub 仓库 Star 支持!如果您在使用过程中有任何功能建议(比如期望加入文字水印、字体选择等),欢迎在评论区或 GitHub Issues 中留言交流。

上一篇 端午节回老家对自己焦虑情绪的一些想法
下一篇 Markdown教程/文件互转/编辑器网站分享