今天请允许我不务正业一下讲点别的。
是这样的。
前段时间刷微信发现自己的文章的图片和文字出现在了别人的文章里。
正巧我另一个朋友有需求,我就简单搞了个Python脚本来批量添加图片的水印当练手。
这篇文章分三小节,第一小节会讲工具的使用方法,第二小节会讲解工具的使用效果。
对于喜欢研究代码的朋友,我会在第三小节简单讲解一下相关的代码原理。
如果Python的脚本形式使用起来太麻烦,后面如果我不偷懒的话再做个更方便用的版本吧。
工具特点:
- 可以对角线模式/居中水印
- 增加水印的随机微偏移功能
- 可以批量处理,对PNG可以保留透明
待改进:
- 没有UI用户界面,易用性较差
- 部分参数输入没有做合法性校验
- 后续会增加可靠性更高的暗码水印功能(频域水印)
0x01 脚本的下载和使用
0x0101 环境配置
由于脚本是用Python写成,需要配置对应的Python3环境。
本脚本在3.13.1下测试通过。
脚本的import如下所示,如果出现no module named xxx,那就pip install安装一下就好了。
大概率只用装个Pillow(pip install pillow)。

蛤?
requirements.txt?
没写。
除此之外,如果有需要自定义字体的需求,可以自行准备一个ttf字体文件放在脚本同目录下。
类似这样:
0x0102 脚本使用
网盘下载链接直接公众号后台回复“水印批量添加”即可。
或者直接在这个Gitee仓库(Github上不了,只能放这里了)下载:
https://gitee.com/lhyi23/automatic-watermark-tool/tree/master/
下载后,可以通过-h来查看使用参数,出现下面这个提示说明环境配置正常:
水印默认是SPE研究所,有需要可以在文件的251行修改default字段。
如果生成水印时中文出现乱码,则需要查看是否为代码文件的编码问题导致的(UTF8和ANSI)。
0x02 使用效果展示
简单讲几个使用的例子。
脚本使用很简单,可以直接把需要加水印的图片拖动到bat脚本上就可以自动添加水印生成新文件out.jpg。
自己敲参数也是可以的。
Bat脚本的核心在最后一行,大家可以结合下面的讲解进行自定义。
0x0201 单文件居中水印处理
单文件处理的范例如下:
python add_watermark.py 源文件 输出文件 参数
例如,我们需要居中打水印SPE研究所_2,使用系统的默认字体,透明度10%,大小是短边大小的10%,随机偏移15像素,则对应的调用方式如下:
python add_watermark.py 源文件 输出文件 --ratio 0.10 --opacity 0.1 --jitter 15 --text "SPE研究所_2"
命令行输出和效果如下所示:
当然,也可以通过修改脚本达到这个目的,效果也是一样的。
0x0202 单文件对角线水印处理
同样的,在处理参数中带上参数--mode diagonal并设置旋转角度(--angle 40)即可:
0x0203 批量处理
这个脚本还可以批量对文件夹进行处理。
把需要操作的文件夹拖动到folder.bat里即可(手动敲Python命令也可达到类似效果)。
处理完成后会在文件夹内生成新文件夹watermarked,里面的就是加了水印的文件:
水印的配置方式和上面类似,这里就不多说了。
当然,这个脚本问题也比较多,这里大家也能看出来。
后续如果有时间在慢慢改进吧。
0x03 代码讲解
简单讲讲代码。
代码本身已经有比较多的注释了,大家感兴趣可以看下,这里只讲关键部分。
有需要也可以自行修改。
Python脚本先从这一部分看起,可以根据需要修改程序的默认参数等:
关键处理内容在add_text_watermark函数中。
第一部分是读取字体,这个就不说了。
第二部分设定水印颜色,可以根据自己的需求来调整fill_color(颜色)、stroke_fill(描边颜色)和stroke_width三个选项(描边宽度):
第三部分叠加水印,代码中使用了新建RGBA图层——添加内容——合并的方式实现。
0x04 总结
简单总结一下吧。
水印添加较麻烦,写个工具批量干。
就是使用不容易,更新还得等后续。
好的,今天就到这里。
对于这个脚本有什么改进建议或者有啥问题,可以给我留言。
谢谢大家。
关于我
本公众号虽然顶着个摄影认证的公众号的认证,但是除了摄影之外,编程、摄影和极客世界都会有涉及——基本上啥都会说一点。
作者是一个热爱摄影的电子工程师,除了会从电子设计的角度看摄影,还会介绍一些有趣的小玩具或一些电子方面的知识。
当然,如果对猫猫感兴趣的朋友也可以关注我,有想了解的知识也欢迎给我留言~
讲讲摄影发发猫,偶尔随便叨一叨。
科技编程风景照,这些随缘能看到。
如果对我的文章和猫猫照片感兴趣,欢迎关注。
也不要吝啬你们的点赞,转发和推荐,谢谢!!