from PIL import Image, ImageDraw, ImageFont
import natsort
import os
def add_number_to_images(input_folder, output_folder):
"""
在指定文件夹内的每张图片右下角添加编号
:param input_folder: 输入文件夹路径
:param output_folder: 输出文件夹路径
"""
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# 获取所有图片文件 使用自然排序
image_files = natsort.natsorted(os.listdir(input_folder))
for index, file_name in enumerate(image_files):
# 打开图片
img_path = os.path.join(input_folder, file_name)
img = Image.open(img_path)
# 获取图片大小
img_width, img_height = img.size
# 创建绘图对象
draw = ImageDraw.Draw(img)
# 设置字体
font_size = max(30, int(img_width * 0.03))
font = ImageFont.truetype("simhei.ttf", font_size)
# 文本内容和颜色
text = f"编号:{index + 1}"
text_color = (0, 0, 0) # 黑色字体
shadow_color = (0, 0, 0) # 黑色阴影
# 获取文本尺寸
bbox = draw.textbbox((0, 0), text, font=font)
text_width = bbox[2] - bbox[0]
text_height = bbox[3] - bbox[1]
# 计算文本位置
x = img_width - text_width - 190
y = img_height - text_height - 30
# 绘制文本阴影
draw.text((x + 1, y + 1), text, font=font, fill=shadow_color)
# 绘制文本
draw.text((x, y), text, font=font, fill=text_color)
# 保存处理后的图片
output_path = os.path.join(output_folder, file_name)
img.save(output_path)
print(f"所有图片已处理并保存到:{output_folder}")
if __name__ == "__main__":
# 输入和输出文件夹路径
input_dir = "图片" # 输入图片的文件夹
output_dir = "处理后图片" # 处理后图片的保存文件夹
if not os.path.exists(input_dir):
os.mkdir(output_dir)
add_number_to_images(input_dir, output_dir)
|