Python PIL库ImageDraw.text设置stroke_fill报类型错误如何解决
PIL绘制文字stroke_fill参数报错修复方案
报错原因
TypeError: color must be int or single-element tuple
你创建的fontimage1为L模式(8位单通道灰度图像),该模式下绘制操作的所有颜色参数仅支持0~255区间的整数,或单元素数值元组。你为stroke_fill传入了三元素RGB元组(0, 0, 0),不符合单通道图像的参数规范,因此触发类型错误。
修复方法
直接修改text方法的stroke_fill参数取值,将三元素RGB值替换为对应灰度的整数值即可。
修改前的代码行:
ImageDraw.Draw(fontimage1).text((0,0),str(label1),stroke_width=10, stroke_fill=(0, 0, 0), fill=255, font=font)
修改后的代码行:
ImageDraw.Draw(fontimage1).text((0,0),str(label1),stroke_width=10, stroke_fill=0, fill=255, font=font)
取值0对应L模式下的纯黑色,和你原本想要设置的(0, 0, 0)RGB黑色显示效果完全一致,同时符合单通道图像的参数要求。
如果后续需要使用彩色描边,可以将fontimage1的创建模式改为RGB,但修改后的彩色图像无法直接作为paste方法的mask参数使用,需要单独提取灰度层作为掩码。
内容的提问来源于stack exchange,提问作者Windy_2212
相关产品推荐
相关产品推荐

