使用Pillow的ImageDraw2.text()方法时遭遇参数错误求助
问题解决:ImageDraw2.text() 参数错误
你遇到的问题核心是用了小众的ImageDraw2模块,而非PIL官方标准的ImageDraw,两者的API参数规则完全不同,网上的教程几乎都是针对标准ImageDraw的,所以按教程用fill参数会报错。
解决方案1:改用标准ImageDraw(推荐)
直接替换成PIL官方维护的ImageDraw模块,你的代码只需要修改两处:
- 替换导入语句
- 修正Draw对象的初始化
修改后的完整代码:
import os from PIL import Image, ImageFont, ImageDraw # 替换ImageDraw2为ImageDraw def OverlayImage(path): img = Image.open(path) Im = ImageDraw.Draw(img) # 用标准ImageDraw初始化 fill_color = (255, 255, 0) dafont = ImageFont.truetype('Memesique-Regular.ttf', 25) print("font done") Im.text((13, 37), "better work", font=dafont, fill=fill_color) # 这里fill参数正常生效 img.show() img.save("meme-image.jpg")
解决方案2:如果非要用ImageDraw2
ImageDraw2的text方法不支持fill或color关键字参数,颜色需要作为位置参数传入,放在文本内容之后:
# 修改text调用这一行即可 Im.text((13, 37), "better work", fill_color, font=dafont)
不过不推荐这个方案,因为ImageDraw2属于PIL的旧分支模块,现在几乎没有维护,资料极少,后续容易遇到更多兼容性问题。
内容的提问来源于stack exchange,提问作者NikplaysgamesYT
相关产品推荐
相关产品推荐

