在实际工作中可能会遇到批量给图片添加水印,这些水印可能是每个图片不一样的,但是格式要统一,字体、间距,位置等,要协调。怎么实现呢?
以下是用python实现的具体步骤:
数据情况:
统一标准命名的图片,一个excel,结构为第一列为对应序号,第二列为需要加的水印。
1 | 经度:109.321305 纬度:31.343865 地址:武汉 时间:2023-04-05 08:34:07 |
2 | 经度:109.319677 纬度:31.345636 地址:武汉 时间:2023-04-05 08:48:31 |
3 | 经度:109.319677 纬度:31.345636 地址:武汉 时间:2023-04-09 09:10:43 |
代码内容
一、引入必要的包
from PIL import Image, ImageDraw, ImageFont
import openpyxl
二、引入数据
# 打开Excel文件并读取数据
workbook = openpyxl.load_workbook('time.xlsx')
worksheet = workbook.active
data = [(row[0], row[1]) for row in worksheet.iter_rows(values_only=True)]
三、循环处理每张图片
# 循环处理每张图片
for i in range(1, 4):
# 打开图片文件
image = Image.open(f'{i}.jpg')
# 创建用于在图片上绘制文字的对象
draw = ImageDraw.Draw(image)
# 设置字体和水印文字
font = ImageFont.truetype('阿里巴巴普惠体R.ttf', size=20)
# 计算文字高度和行间距
text_height = font.getsize('A')[1]
line_spacing = int(text_height * 1.5)
# 循环处理每个需要添加水印的文本
for j, text in data:
if i == int(j):
# 计算绘制文字所需的位置
x =35
y = image.size[1] - (text_height + line_spacing)*2
# 在图片上绘制文字
draw.text((x, y), text, font=font, fill=(255, 255, 255, 128))
# 保存修改后的图片文件
image.save(f'watermarked_image{i}.jpg')
效果示例:
添加前
添加后:
说明:
可以根据需要调整 摆放的位置,字体类型,字体大小、间距等。