AI办公自动化: 批量给图片加上水印

2024-06-24 20:00:05 浏览数 (2)

Deepseek中输入提示词:

你是一个Python编程专家,要写一个Python脚本,具体步骤如下:

打开文件夹:F:AI自媒体内容;

读取里面的png图片;

在图片右下角加上水印,水印内容:“数据来源:toolify.ai,图表制作:公众号AIGCTribe”;

字体大小:五号;字体颜色:红色;水印位置:右边居中;

设置字体为'SimHei',文件路径为:C:WindowsFontssimhei.ttf

加上水印的图片另存为一张新图片,在原图片名后面加上watermark;

注意:每一步都要输出信息到屏幕上

ImageDraw 对象没有 textsize 方法。正确的函数应该是textbbox来获取文本的边界框,然后从中提取宽度和高度

import os

from PIL import Image, ImageDraw, ImageFont

# 设置水印内容和样式

watermark_text = "数据来源:toolify.ai,图表制作:公众号AIGCTribe"

font_size = 10.5 # 五号字体大约对应10.5pt

font_color = (255, 0, 0) # 红色

# 定义字体

font_path = r"C:WindowsFontssimhei.ttf"

font = ImageFont.truetype(font_path, font_size)

# 打开文件夹

folder_path = r"F:AI自媒体内容"

if not os.path.exists(folder_path):

print(f"文件夹 {folder_path} 不存在")

exit()

# 遍历文件夹中的所有png图片

for filename in os.listdir(folder_path):

if filename.endswith(".png"):

print(f"处理文件: {filename}")

# 打开图片

img_path = os.path.join(folder_path, filename)

img = Image.open(img_path)

# 创建Draw对象

draw = ImageDraw.Draw(img)

# 计算水印位置

img_width, img_height = img.size

text_bbox = draw.textbbox((0, 0), watermark_text, font=font)

text_width = text_bbox[2] - text_bbox[0]

text_height = text_bbox[3] - text_bbox[1]

x = img_width - text_width - 10

y = 10 # 右上角位置

# 添加水印

draw.text((x, y), watermark_text, font=font, fill=font_color)

# 保存加水印后的图片

new_filename = f"{filename[:-4]}_watermark.png"

new_img_path = os.path.join(folder_path, new_filename)

img.save(new_img_path)

print(f"已保存: {new_filename}")

print("所有图片处理完成")

0 人点赞