功能关键词:批量添加图片水印、文字水印、随机水印、平铺、不透明度设置。
工具介绍
批量图片水印工具可以在多张图片上叠加图片Logo或文字,支持固定位置、随机位置、平铺,适合批量添加标识、签名、版权声明。窗口的版本标题为v2.0,正式工具名称为批量图片水印工具。
主界面提供源和输出路径、图片和文字水印选项卡、大小、不透明度、旋转、边距、并行线程、预览、日志。水印直接写入输出图片,没有导出为可单独编辑的图层的选项。
工具截图

主要功能
- 可以使用单张图片、多选的图片、文件夹作为源,可以递归处理子目录,可以控制输出目录结构。
- 图片水印可以使用单个Logo,或从水印文件夹顶层随机选择的项目,可以设置阴影颜色、模糊、偏移。
- 文字水印提供单行内容、字体文件、字号和颜色,以及独立的阴影和描边设置。
- 固定模式提供9个位置;随机模式可以从9个标准位置中选择,或使用自由坐标;平铺按像素间距重复水印。
- 水印宽度设为原图宽度的1%—100%,可以调整不透明度、旋转角度、边距,以及1—16线程。
- 可以保留原扩展名,或改为PNG、JPEG、WEBP、BMP、TIFF,也提供替换原图的选项;进度中显示成功、失败、跳过、日志。
使用前的准备
输入选择器列出PNG、JPG、JPEG、BMP、GIF、TIFF、WEBP、HEIC、HEIF;当前扩展名列表不包含.tif。HEIC/HEIF需要pillow-heif支持,没有此支持时会被跳过或排除。
图片水印需要有效的Logo图片或水印文件夹;单个Logo选择器列出PNG、JPG、JPEG、BMP、GIF、TIFF、WEBP。水印为GIF时,仅当前图像会作为Logo加载,Logo动画不会作为独立动画叠加。
文字水印输入框为单行,默认内容“水印文字”包含在软件中。对于中文字体,建议使用“字体”选择包含所需字符的TTF、OTF、TTC;默认没有自动搜索系统中文字体的处理。
常规输出时指定保存目录,程序会创建所需目录;替换原图时直接覆盖源。本教程将路径保持为空,不选择、拖入添加或创建测试图片,也不更改默认示例文字。
详细操作步骤
1. 添加源,确定输出目录、结构和格式
点击“路径设置”输入行中的“浏览”,菜单会显示“选择文件(可多选)”和“选择文件夹”;通过浏览进行的选择会合并到现有输入中,多条路径以半角分号分隔,也可以拖入文件或文件夹进行添加。
手动输入的路径支持按分号、逗号、换行拆分,相同的路径字符串会被删除;同时添加文件夹及其中的单独文件时,同一图片可能会被重复收集。包含逗号的路径也会被拆分,因此需要注意实际输入。
需要更深层级的文件夹时,勾选“扫描子目录”;同时勾选已启用的“保留结构”,即可按相对于源根目录的路径输出。扫描和保留结构未同时启用时,程序会在输出目录下添加源图片的父文件夹名,而不是将所有内容直接放在输出根目录。
常规模式下,点击输出的“浏览”指定目录,并选择保留原格式、PNG、JPEG、WEBP、BMP、TIFF中的一种。“质量”的范围为1至100,默认为95,仅用于常规静态JPEG和WebP的保存。
勾选“替换原图”后,输出路径和保留结构将被禁用,实际上会以原扩展名写回原位置,不使用所选的统一输出格式,也不提供撤销功能。需要保留源时,不要勾选,并使用单独的输出目录;截图中未启用替换,也未选择路径。

2. 为图片水印选择单个Logo,并根据需要设置阴影
保持选中“图片水印”选项卡和“单个”,点击路径右侧的“...”选择Logo。这是与待处理原图分开指定的,不要将Logo路径当作源路径。
需要图片阴影时,勾选“阴影”,点击“颜色”选择颜色;模糊范围为0至20,默认为3,X和Y各自的范围为-20至20,默认为3。正X为向右,正Y为向下;参数用于Logo本身的效果,之后与Logo一起缩放和旋转。
Logo按原图宽度保持宽高比缩放,不单独设置固定高度。透明Logo按自身的Alpha通道叠加;不透明Logo的背景也会与Logo一起写入。此处仅显示选项,水印图片路径为空。

3. 需要随机Logo时切换到多个随机
在同一选项卡中选择“多个随机”,原来的单张图片路径框会切换为“水印文件夹”;点击右侧的“...”选择目录。实际批处理时,每张源图片从中随机获取1个Logo。
水印文件夹仅收集扩展名匹配的顶层项目,不递归处理子目录;页面没有按顺序切换、按文件名匹配、固定随机种子的控件。
这与“随机位置”是两个独立的设置:多个随机决定使用哪个Logo,随机位置决定放置的位置。动画GIF中,每帧都会调用水印获取,随机Logo也可能随帧变化,不保证整个动画使用相同的Logo。
当前仅切换了源的方式,未选择文件夹,也未加载素材。

4. 切换到文字水印时设置内容、字体和效果
点击“文字水印”选项卡,在单行内容框中输入实际文字;界面当前显示的“水印文字”是软件原有的默认内容。点击“字体”选择TTF、OTF、TTC,右侧会显示字体文件名。
字号范围为8至500,默认为48,首先用于生成文字Logo;之后整体仍会按“水印大小(%)”缩放,因此不等于最终的固定像素字号。点击“颜色”设置文字颜色;默认为白色。
启用“阴影”后,可以使用“颜色”及X和Y偏移,各自的范围为-20至20,默认为2。启用“描边”后,可以选择颜色及1至10的宽度,默认为2;两个开关相互独立。
字体保持为空或加载失败时,会回退到Pillow的默认字体,这不保证能够完整覆盖中文字符。此选项卡没有自动换行、文字模板变量、粗体或斜体、独立背景色控件;此图中未输入测试文字,也未确认颜色。

5. 选择固定位置,设置大小、不透明度和边距
在“参数与控制”中选择“固定”,并选择左上、上中、右上、左中、居中、右中、左下、下中、右下中的一个;默认为左上固定,这些位置按钮会随模式变化而显示或隐藏。
“水印大小(%)”的范围为1至100,默认为15,表示旋转前水印宽度占原图宽度的比例,按宽度保持宽高比缩放,并非水印高度的比例。
不透明度范围为0至100,默认为80;0为不可见,100时不再额外降低水印本身的alpha。半透明Logo仍受自身Alpha通道影响,不能将100理解为强制所有像素不透明。
旋转角度范围为-180至180,默认为0,旋转会扩大水印的包围框。边距范围为0至500,默认为20,控制固定位置和随机位置距边缘的距离;纵向较长的Logo或旋转后的大包围框仍可能超出原图并被裁剪。
线程数范围为1至16,默认为4,表示并行处理的图片数量,大图较多时可以减少。当前仅显示默认参数,未移动滑块或执行图片处理。

6. 随机位置中根据需要选择标准或自由
选择“随机”后,9个固定位置按钮会被替换为“标准”和“自由”。标准表示从9个预设位置中随机选择一个,自由表示在按边距计算的可用坐标范围内随机选点。
随机模式下每次处理的位置可能变化,页面没有种子、固定顺序、排除区域的设置;水印过大时仍可能超出边界,需要结合大小、旋转、边距使用。
右侧的随机位置预览当前使用左上边距位置作说明,并非实际采样的批处理坐标。本次仅显示随机设置,未生成预览。

7. 需要重复覆盖时选择平铺并设置间距
选择“平铺”后,位置行会显示“间距”数值框,范围为0至500,默认为50,表示各水印包围框之间以像素为单位的间隙。间距0表示相邻,并非禁用平铺。
程序从左上角(0,0)开始,按水印宽高加间距的值重复,超出下边缘和右边缘的部分会在原图边界被裁剪。平铺不使用下方的边距值作为起始偏移。
大小、不透明度、旋转也适用于平铺水印;Logo越小、间距越小,重复越多。图中仅打开平铺设置,间距仍为默认的50,未输入测试参数。

8. 实际使用时单独选择用于预览的原图
点击右侧“实时预览”下方的“选择图片”选择要显示的原图,点击“刷新”或调整相关水印参数查看预览。预览选择与左侧批处理的源相互独立。
图片水印预览仅加载单个水印路径,不从“多个随机”文件夹获取Logo;切换到多图后,如果没有单张图片路径,可能会保留旧图或不更新。实际随机结果需要按实际模式理解,不能将此预览当作随机分配列表。
预览失败会不作通知直接返回,页面保留图片也不代表当前设置已生效。此处将预览保持为空,未选择素材,未点击刷新执行渲染。

9. 实际确认后再开始,并结合日志检查保存状态
实际确认有效的源、常规输出或替换方式、水印素材、模式、参数后,点击“开始处理”;程序会先验证使用权限,然后检查必要的路径和文字。截图仅展示选项,未发起或执行权限请求。
进度日志显示成功、失败、跳过、百分比。需要中断时点击“停止”;已启动的图片任务可能会继续直至写入完成,已保存的文件不会回滚;多线程任务在开始时检查停止标志。
程序的完成分支将进度设为100%、状态设为完成,也包括停止后进入的完成分支。成功数对应文件已写入,部分水印加载或渲染异常会返回原图并继续保存,因此也需要考虑错误日志,不能仅凭绿色状态断定所有水印均正确。
常规输出中名称已存在时,会尝试添加_1、_2等,但没有独占预留,同一批次内并行处理的同名文件仍可能冲突。停止也不会撤销原图替换。页面没有独立的导出、下载、打开输出目录按钮,文件直接写入设置的位置。
本次简易制作未实际上传素材、预览图片、生成水印、覆盖源,也未等待或验证处理结果。

主要参数说明
| 参数 | 功能 | 建议 |
|---|---|---|
| 源/输出 | 多条路径;扫描后可以保留相对结构;替换原图为可选项。 | 即使是不保留结构的常规操作,也会按源的父目录名创建子目录。 |
| 图片水印 | 单张图片或来自文件夹顶层的多个随机图片,图片阴影模糊为0—20。 | 水印素材与批处理源分开指定。 |
| 文字水印 | 单行内容;字体;字号8—500,默认48;阴影、描边。 | 中文请选择包含目标字符的字体,最终大小仍会缩放。 |
| 位置模式 | 9个固定位置、标准/自由随机、平铺间距0—500。 | 平铺从0,0开始,边距不影响平铺起始位置。 |
| 大小/不透明度 | 1—100%,默认15;0—100,默认80。 | 大小基于原图宽度,100不改变水印自身的Alpha通道。 |
| 旋转/边距/线程 | -180—180,默认0;0—500,默认20;1—16,默认4。 | 旋转后包围框可能变大,纵向较长的Logo需要注意边界。 |
| 格式/质量 | 原格式或PNG/JPEG/WEBP/BMP/TIFF;1—100,默认95。 | 质量用于静态JPEG/WebP,替换原图时保留原扩展名。 |
结果与保存
常规输出:同时勾选扫描和保留结构时,文件写入相对目录;否则使用输出目录/源的父文件夹名/文件。统一格式会更改扩展名,原格式仅保留扩展名,图片仍会重新编码。
替换原图时,先在同一目录写入临时文件,然后尝试替换,最终覆盖源文件;这不是可恢复的备份功能。异常可能留下临时文件或不完整文件,代码没有统一的事务回滚。
动画GIF文件会逐帧添加水印,并尝试多帧保存;循环次数固定为0,保存时使用单个duration值;统一转换后的动画功能取决于目标格式,不保证逐帧显示时间、处置方式、所有动画信息均保持不变。多页TIFF等文件没有逐页处理的步骤。
保存分支不显式保留EXIF、ICC、DPI等全部元数据,图片并非统一按EXIF方向旋转至正立。JPEG/BMP/TIFF等输出中的Alpha通道受保存分支限制;不能基于保留原格式而假设这些均不改变。
实际完成后,检查实际输出目录或源位置,并结合日志判断。本教程未生成、显示、下载或验证结果文件。
常见问题与使用建议
1. 为什么无法使用保留结构?
先勾选扫描子目录;替换原图也会禁用保留结构,并取消勾选。
2. 为什么替换原图时不能选择输出目录?
此模式直接写回原位置,使用原扩展名保存,不使用常规输出路径。
3. 不保留结构时,所有内容都会写入输出根目录吗?
不会,当前常规分支会将源图片的父文件夹名作为子目录添加。
4. 多个随机会递归处理水印文件夹吗?
不会,仅从扩展名匹配的顶层项目中获取Logo。
5. 多个随机与随机位置有什么区别?
前者决定Logo的源,后者决定叠加坐标,可以各自独立选择。
6. 水印大小15%是基于图片高度计算的吗?
旋转前的Logo宽度基于原图宽度计算,之后高度按比例调整。
7. 不透明度100会使Logo的透明背景消失吗?
不会,只是不再额外降低已有的alpha,透明背景仍保持透明。
8. 默认字体能保证显示中文吗?
默认回退为Pillow字体,不保证完整覆盖字符,可以通过字体按钮选择中文字体文件。
9. 随机位置的预览每次都会采样吗?
当前预览使用左上边距坐标作说明,多个随机的预览也不加载Logo文件夹。
10. 停止后的100%表示所有图片都已处理吗?
完成分支仍可能设置100%,因此不能这样下结论,需要结合统计和停止日志考虑。




