from PIL import Image, ImageDraw, ImageFont 读取文本文件内容 with open('text.txt', 'r') as f: text = f.readlines() for t in text: # 对文本进行处理 t = t.strip().capitalize().replace('.s', 'S').replace('.t', 'T') # 创建一个白色背景的图片 image = Image.new('RGB', (165, 50), 'white') # 绘制文本在图片上 draw = ImageDraw.Draw(image) font = ImageFont.truetype('arial.ttf', 20) # 使用Arial字体,大小为20 text_width, text_height = draw.textsize(t,font) draw.text(((165 - text_width) / 2, (50 - text_height) / 2), t, fill='black', font=font) # 保存图片 image.save(f"{t[:10]}.png") # 以每条内容的前10个字符命名图片文件 这段代码报以下错误 Traceback (most recent call last): File "C:\Project\urlopen\logo.py", line 17, in <module> text_width, text_height = draw.textsize(t,font) AttributeError: 'ImageDraw' object has no attribute 'textsize'
时间: 2024-01-06 11:06:00 浏览: 34
这个错误是因为在Pillow库中,`ImageDraw`对象没有`textsize`属性。你可以使用`ImageFont`库中的`getsize`方法来获取文本的尺寸。以下是修改后的代码:
```python
from PIL import Image, ImageDraw, ImageFont
# 读取文本文件内容
with open('text.txt', 'r') as f:
text = f.readlines()
for t in text:
# 对文本进行处理
t = t.strip().capitalize().replace('.s', 'S').replace('.t', 'T')
# 创建一个白色背景的图片
image = Image.new('RGB', (165, 50), 'white')
# 绘制文本在图片上
draw = ImageDraw.Draw(image)
font = ImageFont.truetype('arial.ttf', 20) # 使用Arial字体,大小为20
text_width, text_height = draw.textsize(t, font=font)
draw.text(((165 - text_width) / 2, (50 - text_height) / 2), t, fill='black', font=font)
# 保存图片
image.save(f"{t[:10]}.png") # 以每条内容的前10个字符命名图片文件
```
在上述代码中,我们使用`ImageDraw`对象的`textsize`方法来获取文本的尺寸,然后使用`ImageFont`库中的`truetype`方法加载字体文件,并将字体大小设置为20。最后,使用`draw.textsize()`方法绘制文本,并保存图片。
请确保你已经安装了Pillow库(使用`pip install pillow`命令进行安装),并将`arial.ttf`字体文件放在与脚本相同的目录下,以便正确运行。