电脑环境
window :win10 x64
python:Python 3.11.2 (tags/v3.11.2:878ead1, Feb 7 2023, 16:38:35) [MSC v.1934 64 bit (AMD64)] on win32
编译器:vscode 1.85.0
python-库:Pillow==9.5.0 (必须这个版本,最新版10.1.0在ImageDraw和ImageFont的函数和9.5的有差异,当前gpt给的代码均是以pillow9.5为例的)
代码
使用gpt3.5生产代码
#!/usr/bin/env python3
from PIL import Image, ImageDraw, ImageFont
import os
def add_text_to_images(directory, text=None, font_path='arial.ttf', max_font_size=100, color=(255, 0, 0)):
# 加载字体
font = ImageFont.truetype(font_path, max_font_size)
for filename in os.listdir(directory):
if filename.endswith(".jpg"):
#通过文件名获取 输入文字,文件名: IMG_20210808_093735.jpg
# 去除文件扩展名
base_name = os.path.splitext(filename)[0]
# 使用"_"分割文件名
file_name_parts = base_name.split("_")
text = file_name_parts[1]
img = Image.open(os.path.join(directory, filename))
draw = ImageDraw.Draw(img)
# 获取图片的宽度和高度
width, height = img.size
# 根据图片的大小动态调整文字的大小
font_size = min(width, height) // 20
font = ImageFont.truetype(font_path, font_size)
# 计算文字的位置
text_width, text_height = font.getsize(text)
x = (width - text_width-80)
y = (height - text_height-80)
draw.text((x, y), text, fill=color, font=font)
# 保存图片时不降低质量
img.save(os.path.join(directory, filename), "JPEG", quality=100)
# 使用方法
add_text_to_images('F:\相片\Camera')
代码报错情况1
pillow函数报错
# AttributeError: ‘ImageDraw‘ object has no attribute ‘textsize‘
主要原因就是最新的Pillow 10.0.0 版本已经删除了函数,最简单的方式就是先卸载最新的Pillow,在安装Pillow 9.5.0版本的就好了。
卸载 Pillow
pip uninstall Pillow
安装旧版本的 Pillow
pip install Pillow==9.5.0