ImageDraw' object has no attribute 'textbbox'
时间: 2023-06-21 12:07:50 浏览: 1247
这个错误通常是因为你正在使用 `ImageDraw` 对象的 `textbbox()` 方法,但是这个方法在旧版本的 PIL 库中不存在,只有在较新的版本中才添加进去。
要解决这个问题,你可以尝试升级你的 PIL 库到最新版本,或者使用一个更旧的版本,其中不需要使用 `textbbox()` 方法。另外,你也可以尝试使用其他的方法来计算文本的边界框,例如使用 `ImageFont` 对象的 `getsize()` 方法来计算文本的大小,并手动计算边界框的位置。
例如,下面是使用 `getsize()` 方法来计算文本大小并手动计算边界框位置的示例代码:
```
from PIL import Image, ImageDraw, ImageFont
# 创建一个空的图像对象
img = Image.new('RGB', (200, 200), color = (255, 255, 255))
# 获取一个字体对象
font = ImageFont.truetype('arial.ttf', 20)
# 创建一个绘图对象
draw = ImageDraw.Draw(img)
# 绘制文本
text = 'Hello, world!'
text_size = font.getsize(text)
text_pos = ((img.width - text_size[0]) // 2, (img.height - text_size[1]) // 2)
draw.text(text_pos, text, fill=(0, 0, 0), font=font)
# 计算文本边界框
text_bbox = (text_pos[0], text_pos[1], text_pos[0] + text_size[0], text_pos[1] + text_size[1])
# 显示图像
img.show()
```
阅读全文