Pillow库使用ImageDraw绘制文本设置fill参数报错如何解决
问题原因
该报错由原图的色彩模式导致:你使用的测试图片为索引彩色模式(P模式),这类图片的所有颜色都预先存储在固定大小的调色板中,无法直接使用调色板不存在的颜色(比如你设置的红色),且当前调色板容量已满无法新增颜色条目,所以触发了索引溢出错误。
不设置fill参数时看不到绘制文本,是因为默认填充色和背景重合,或同样受色彩模式限制无法正常渲染。
解决方案
打开图片后先转换为真彩色模式即可,修改后可运行的代码如下:
from PIL import Image, ImageDraw # 不需要透明通道就把参数换成"RGB"即可 img = Image.open('test.png').convert("RGBA") d = ImageDraw.Draw(img) d.text((100, 100), "HELLO", fill="red") img.save('testssss.png')
convert方法会把索引模式的图片转为不受调色板限制的真彩色模式,之后可以任意使用自定义颜色绘制内容,不会再触发报错。
内容的提问来源于stack exchange,提问作者cutebear
相关产品推荐
相关产品推荐

