当前位置:首页>python>Python办公自动化:照片批量添加水印工具

Python办公自动化:照片批量添加水印工具

  • 2026-10-21 13:29:36
Python办公自动化:照片批量添加水印工具

引言

在刷小红书的时候,刷到一个老师发帖:说要给学生照片的右下角批量添加水印,一张张手动添加不仅速度慢,还无法保证对齐。

后来了解到,在学校、体检中心或健身房的工作场景中,我们经常需要处理成百上千张照片,并将对应的身高、体重信息标注在照片上。 手动使用 PS 或是美图秀秀一张张修改不仅效率低下,而且极易出错。

 为了方便工具给更多人使用,我对excel的格式做了一些修改,增加了一列照片的文件名:

今天,我们将利用 Python 开发一个可视化工具。 它能够读取 Excel 里的学生信息,自动在对应的照片右下角绘制红色黑体字,并支持自定义标题、自动适配照片分辨率。

核心功能

  • 自动化匹配:通过 Excel 中的文件名列,精准锁定对应的照片。
  • 动态排版:文字大小根据照片分辨率自动缩放,确保在高清大图或手机照片上都有良好的视觉效果。
  • 人性化 GUI:无需运行代码命令行,点击按钮即可选择文件和保存位置。
  • 智能纠错:自动跳过 Excel 中的空行或文件夹中缺失的照片。
  • 名字居中:多行文本块中,名字相对于其他信息水平居中,排版更美观。

工具下载

如果你对技术不感兴趣,这里直接放出工具获取方式:

关注公众号“易派森”,在对话框输入“照片批量水印”获取下载地址。

其中exe文件直接双击打开即可使用。

使用方法

第一步

首先需要准备两个文件:

一个是保存有学生信息的excel文件, 如果有几个学生的照片暂时没有,那就空着也没事

二是照片文件夹:

注意文件名要和excel中的完全一致,不然是找不到的。

第二步

输入第一行的文字,比如“三年级上册”

然后选择照片所在文件夹和excel,再选一个文件夹保存修改后的照片

第三步

点击“开始处理”

等进度条走完后,会提示完成信息:

打开刚刚选择的保存文件夹,就能看到修改后的照片:

技术讲解

如果对技术感兴趣,可以看看下面的一些技术细节

技术栈

  • Python 3.x
  • Pandas & Openpyxl:用于高效处理 Excel 数据。
  • Pillow (PIL):强大的图像处理库,负责文字绘制。
  • Tkinter:Python 内置的 GUI 库,用于构建操作窗口。
  • Threading:多线程处理,确保批量任务时界面不卡死。

核心代码逻辑解析

动态计算字体大小

如果照片是 4000 像素,固定字体大小会显得非常小;如果是 800 像素,固定大小又会占满屏幕。我们采用百分比计算法:

# 根据图片高度动态调整字体大小 (设为高度的 3.5%)font_size = int(img.height * 0.035)font = ImageFont.truetype("simhei.ttf", font_size)

文本块的精准定位

为了让文字始终出现在右下角,我们需要先计算文字块的总宽度和总高度,再用图片的总宽高减去边距得出起始坐标。

bbox = draw.multiline_textbbox((0, 0), text_content, font=font, spacing=line_spacing)tw, th = bbox[2]-bbox[0], bbox[3]-bbox[1]# 设置边距,计算起始坐标 (x, y)margin_x = int(img.width * 0.05)margin_y = int(img.height * 0.05)x = img.width - tw - margin_xy = img.height - th - margin_y

GUI 与后台线程分离

在 GUI 程序中,如果直接点击按钮执行耗时任务,界面会进入“未响应”状态。通过 threading.Thread,我们可以让后台处理数据,前端实时更新进度条。

完整代码实现

关注公众号“易派森”,在对话框输入“照片批量水印”获取完整代码。

总结

通过这个小项目,我们不仅学会了如何使用 Python 处理图像和 Excel,还接触到了简单的 GUI 开发和多线程优化。 原本需要大半天才能完成的体力活,现在只需点点鼠标,几分钟即可搞定。这正是 Python 自动化办公的魅力所在!


如果你有类似的需求或在运行中遇到问题,欢迎在公众号易派森联系我


最新文章

随机文章