python 批量给图片加水印

在实际工作中可能会遇到批量给图片添加水印,这些水印可能是每个图片不一样的,但是格式要统一,字体、间距,位置等,要协调。怎么实现呢?

以下是用python实现的具体步骤:

数据情况:

python 批量给图片加水印_第1张图片

 统一标准命名的图片,一个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')

效果示例:

添加前

python 批量给图片加水印_第2张图片

添加后:

python 批量给图片加水印_第3张图片

说明:

可以根据需要调整 摆放的位置,字体类型,字体大小、间距等。

你可能感兴趣的:(python,excel,信息可视化,python)