You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pillow调用ImageDraw.Draw.textsize报'str'无'getsize'属性错误如何解决

问题原因
  • 核心错误:你传递给textsize方法的font参数是字体文件的路径字符串,但是该方法要求font参数必须是ImageFont实例,底层逻辑会调用字体对象的getsize方法计算尺寸,对字符串调用该方法自然会触发属性不存在的报错。
  • 额外注意:Pillow 9.2.0及以上版本已经正式弃用ImageDraw.textsize()方法,后续版本会直接移除该接口,建议替换为官方推荐的textbbox()方法计算文本尺寸。
修复方案

首先需要导入ImageFont模块,调用ImageFont.truetype()加载字体路径得到合法的字体实例,再传入尺寸计算方法即可,修复后代码如下:

from PIL import Image, ImageDraw, ImageFont

txt_img = Image.new("RGBA", (320, 240), (255,255,255,0))
d = ImageDraw.Draw(txt_img)
text = "abcabc"
# 加载字体得到实例,第二个参数为字体大小,可根据需求调整
font_mono = ImageFont.truetype("Pillow/Tests/fonts/FreeMono.ttf", size=24)
font_color_green = (0,255,0,255)

# 旧版本Pillow可继续使用textsize(已弃用)
txt_width, _ = d.textsize(text, font=font_mono)

# 高版本Pillow推荐用法,替换textsize
# bbox = d.textbbox((0, 0), text, font=font_mono)
# txt_width = bbox[2] - bbox[0]
# txt_height = bbox[3] - bbox[1]

内容的提问来源于stack exchange,提问作者TheTomer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 04:06:03