不知道为什么会说没这个属性,但是可以点出来
# 报错信息
c_width, c_height = draw.textsize(c, font=font)
AttributeError: 'ImageDraw' object has no attribute 'textsize'
根据报错信息,看起来您正在使用Python的Pillow库(PIL)中的ImageDraw对象,并尝试使用'textsize'属性来获取文本的尺寸。然而,Pillow的ImageDraw对象实际上没有名为'textsize'的属性,这就是导致AttributeError的原因。
在Pillow中,要获取文本的尺寸,您应该使用ImageDraw对象的textsize()
方法而不是属性。该方法接受文本和字体作为参数,并返回文本在给定字体下的宽度和高度。
下面是使用textsize()
方法的示例代码:
from PIL import Image, ImageDraw, ImageFont
# 创建一个空白图像
image = Image.new('RGB', (100, 50), color='white')
# 创建一个ImageDraw对象
draw = ImageDraw.Draw(image)
# 设置文本和字体
text = "Hello, Pillow!"
font = ImageFont.truetype("arial.ttf", 20) # 替换为您希望使用的字体
# 获取文本尺寸
text_width, text_height = draw.textsize(text, font=font)
# 在图像上绘制文本
x = (image.width - text_width) // 2
y = (image.height - text_height) // 2
draw.text((x, y), text, font=font, fill='black')
# 保存图像
image.save("output.png")
# 显示图像
image.show()
请确保在上述示例代码中替换"arial.ttf"为您实际使用的字体文件路径,并适当修改文本和图像尺寸。这样,您应该能够成功获取文本尺寸并在图像上绘制文本。
你Pillow的版本是10.0.0吧。在10.0.0版本,ImageDraw.textsize()和ImageDraw.multiline_textsize() 都被删除了,改用ImageDraw.textbbox(),ImageDraw.textlength()和ImageDraw.multiline_textbbox()
要求
Package Version
certifi 2020.4.5.1
chardet 3.0.4
coreapi 2.3.1
coreschema 0.0.4
Django 1.11.3
django-crispy-forms 1.6.1
django-filter 1.0.4
django-formtools 2.0
django-guardian 1.4.9
django-reversion 2.0.9
djangorestframework 3.6.3
future 0.16.0
httplib2 0.9.2
idna 2.9
itypes 1.2.0
Jinja2 2.11.2
Markdown 2.6.8
MarkupSafe 1.1.1
mysqlclient 1.3.10
olefile 0.46
Pillow 4.2.1
pip 20.0.2
pytz 2019.3
requests 2.23.0
setuptools 46.1.3
six 1.10.0
uritemplate 3.0.1
urllib3 1.25.9
wheel 0.34.2
XlsxWriter 0.9.8
xlwt 1.2.0
流程
更改goods下serializers.py