Python PIL的ImageDraw.text报'str无getmask2属性'错误如何解决?
错误原因
- 你代码中传给
ImageDraw.text()的font参数是字符串类型的字体文件路径,而该参数要求接收ImageFont实例对象,字符串本身没有getmask2方法,因此触发属性错误。 - 额外疏漏:你定义的字体大小变量
size=100、用户输入的RGB颜色变量colour都没有实际生效,属于逻辑冗余。
修复方案
你需要先调用ImageFont.truetype()方法,把字体路径和字号传入,生成符合要求的ImageFont实例后再使用,修复后的完整代码如下:
from PIL import Image, ImageDraw, ImageFont image = Image.open('C:\\Users\\User\\Downloads\\marple.jpg') input_text = 'Hey gys' font_path = 'C:\\Windows\\Fonts\\Fira Code\\FiraCode-Regular.ttf' size = 100 # 生成ImageFont实例 font = ImageFont.truetype(font_path, size) colour = [1,2,3] for i in range(0,3): colour[i] = int(input(f'Colour (RGB value {i + 1}) : ')) colour = tuple(colour) type_text = ImageDraw.Draw(image) # 传入font实例,使用用户输入的颜色值 type_text.text((0,0), input_text, font=font, fill=colour) image.show()
如果运行时提示找不到字体文件,你可以检查字体路径拼写是否正确,或者直接把字体文件复制到代码同级目录,直接传字体文件名即可。
内容的提问来源于stack exchange,提问作者Vinura Yashohara
相关产品推荐
相关产品推荐

