# batch-watermark **Repository Path**: qq5705/batch-watermark ## Basic Information - **Project Name**: batch-watermark - **Description**: 批量图片加水印工具 > 基于 Python + Pillow 开发,GUI图形界面工具,支持**拍摄日期水印、自定义文字水印、图片Logo水印**,支持圆角半透明背景,批量处理文件夹/多张图片,自动读取照片EXIF拍摄时间。 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-05 - **Last Updated**: 2026-09-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ```markdown # 批量图片加水印工具 > 基于 Python + Pillow 开发,GUI图形界面工具,支持**拍摄日期水印、自定义文字水印、图片Logo水印**,支持圆角半透明背景,批量处理文件夹/多张图片,自动读取照片EXIF拍摄时间。 ## ✨ 功能特性 1. 🖼️ 三种水印模式 - **拍摄日期模式(默认)**:自动读取照片EXIF原始拍摄时间;无EXIF图片(截图、网络图片)自动回退文件修改时间;可选择是否显示时分秒。 - **自定义文字模式**:自定义任意水印文字。 - **图片Logo模式**:使用PNG/JPG图片作为logo水印,支持圆角。 2. 🎨 丰富样式配置 - 字体大小可调,文字过宽自动缩小字号适配 - 字体颜色自定义(#RRGGBB十六进制) - 可选半透明圆角背景色块,文字在背景块内垂直居中 - 水印整体透明度0‑100%调节 - 水印位置:右下角 / 左下角 / 右上角 / 左上角 / 画面居中 - 可设置水印距离图片底边、右边像素边距 - Logo水印支持缩放比例、圆角遮罩 3. 📂 文件处理 - 支持选择整个文件夹批量处理(非递归读取),也可手动多选单张/多张图片 - 输出路径可选;不指定输出目录时,自动在原图所在目录新建`水印`文件夹保存处理后图片 - 支持图片格式:`jpg/jpeg/png/bmp/webp` 4. 💾 配置自动记忆 - 关闭程序后,水印模式、颜色、透明度、字号、位置、圆角等配置自动保存,下次打开自动加载 - 输入输出路径不记忆,避免路径失效 5. 👀 预览与进度 - 预览按钮:直接查看第一张图片加水印后的效果,批量处理前确认样式 - 进度条 + 当前文件名实时显示 - 支持中途停止批量任务 - 处理完成后展示成功/失败统计,失败会输出错误原因 ## 📋 环境依赖 Python版本:Python 3.8 ~ 3.12 推荐 需要安装Pillow图像处理库 ```bash pip install Pillow ``` ## 📁 文件说明 ``` 项目文件夹 ├─ main_gui.py # GUI图形界面入口,运行这个文件启动程序 ├─ watermark.py # 水印核心处理逻辑,所有图片绘制、EXIF读取在此 └─ watermark_config.json # 自动生成,保存界面配置,无需手动编辑 ``` > ⚠️ `watermark_config.json`为程序运行自动生成,删除此文件会重置所有界面配置为默认值。 ## 🚀 运行方式 ### 方式1:命令行运行 打开终端,进入项目目录执行: ```bash python main_gui.py ``` 弹出图形窗口即可操作。 ### 方式2:打包exe(Windows免Python环境) 使用pyinstaller打包为独立可执行文件: ```bash pip install pyinstaller pyinstaller -F -w main_gui.py ``` - `-F`:打包为单个exe文件 - `-w`:运行不弹出黑色控制台窗口 打包完成后exe在`dist`目录下。 ## 📖 使用教程 ### 1. 选择输入来源 - `选择文件夹`:读取文件夹内全部图片(**不递归子文件夹**) - `选择多张图片`:手动挑选若干图片 - `清空`:清空已选图片列表 ### 2. 设置输出文件夹(可选) - 不选择:每张原图所在目录自动创建`水印`文件夹,处理后的图片保存到此文件夹 - 选择输出文件夹:所有处理完成图片统一保存到你指定的文件夹 ### 3. 选择水印模式 1. **拍摄日期(默认)** - 勾选`同时显示时间`:输出格式`2026‑09‑05 14:20:10`;不勾选只输出日期`2026‑09‑05` - 逻辑:优先读取照片EXIF拍摄时间 → EXIF修改时间 → 文件系统修改时间。截图没有EXIF会自动使用文件修改时间。 2. **自定义文字**:输入想要打的水印文字。 3. **图片Logo**:点击`选择Logo`,选择图片,推荐使用PNG透明图片。 ### 4. 水印参数 - **字体大小**:文字水印字号,单位像素;文字超出设定最大宽度会自动缩小字号。 - **字体颜色**:设置水印文字颜色,可以直接输入十六进制颜色码,或者点击`选择颜色`调色板选色,点`应用`生效。 - **水印透明度**:整体水印透明度,0%完全透明,100%完全不透明。 - **背景色**:填写十六进制颜色,例如`#000000`黑色;**留空代表无背景色块**。设置背景色后文字会在色块内部上下居中。 - **水印位置**:选择水印摆放的位置。 - **底边距 / 右边距**:水印距离图片底边、右边的像素距离。 - **圆角半径**:背景色块/logo图片的圆角大小,单位像素,0代表直角。 - **缩放比例**:Logo水印缩放比例,基于原图宽度缩放。 ### 5. 预览 & 批量处理 1. 点击`预览效果`,弹出窗口查看第一张图片处理效果,确认样式。 2. 确认无误点击`批量处理`开始批量加水印。 3. 处理中可以点击`停止`中断任务。 4. 处理结束弹窗提示成功与失败数量,失败会列出文件名和错误原因。 ## ⚙️ 关键细节说明 1. **EXIF读取逻辑** > 相机拍摄照片带有EXIF拍摄时间;微信/截图、网络下载图片通常丢失EXIF,程序自动读取文件修改时间作为日期水印。 > 如果复制文件、修改文件,文件修改时间会被系统改变,会导致水印日期不对。 2. **背景色块垂直居中** > 修复PIL `textbbox`基线偏移问题,设置背景色后,文字在背景矩形内部上下居中,上下内边距视觉均等。 3. **字体兼容** > 程序会自动依次尝试系统常见中文字体(黑体、微软雅黑、苹方、文泉驿等),全部找不到时回退系统默认字体。Linux/macOS需要系统安装中文字体,否则中文会显示方框乱码。 4. **图片保存参数** > JPG输出质量固定95;PNG/WebP会转为RGB保存,透明通道会丢失(JPG不支持透明)。 5. **配置文件** > 关闭GUI程序会自动保存当前界面配置;删除`watermark_config.json`,下次打开恢复出厂默认设置。 ## ❓常见问题 ### Q1:中文水印显示方框乱码 A:系统缺少中文字体。Windows自带微软雅黑/黑体一般没问题;Linux需要安装文泉驿微米黑;macOS自带苹方。 ### Q2:日期水印时间不对 A:图片没有EXIF拍摄信息,程序读取文件修改时间。文件复制、下载、编辑会修改文件修改时间。原始相机原图EXIF才会得到正确拍摄时间。 ### Q3:预览正常,批量处理图片没有水印 A:检查输出路径,确认是否保存到原图目录的`水印`文件夹。 ### Q4:设置背景色,文字上下不居中 A:使用仓库提供修改后的`watermark.py`,旧版本存在基线偏移bug。 ### Q5:打包exe运行报错 A:打包时不要把`watermark_config.json`打进程序,运行exe会自动在同目录生成。 ## 📄 许可证 本项目基于开源项目改造,仅供个人学习使用,请勿用于商用分发。 ```