关于python PIL库ImageDraw的Draw方法的问题

在做“给图片加数字”的练习时,发现了这样一个问题

from PIL import Image,ImageDraw,ImageFont

img = Image.open('C:\\Users\\24692\\Desktop\\2469.jpg','r')
draw = ImageDraw.Draw(img)
width,height = img.size
ttFont = ImageFont.truetype('C:/windows/fonts/Arial.ttf',10)
draw.text((width-40,0),"9",(0,255,0),font = ttFont)

img.save('qq_addNub.jpg')
img.show()
from PIL import Image,ImageDraw,ImageFont

img = Image.open('C:\\Users\\24692\\Desktop\\捕获.PNG','r')
draw = ImageDraw.Draw(img)
ttFont = ImageFont.truetype('C:/windows/fonts/Arial.ttf',50)
draw.text((500,500),"hello",(0,255,0),font = ttFont)

img.save('result.PNG')
img.show()

上面两段几乎一样的代码却是截然不同的运行结果
第一段运行出现了"TypeError: function takes exactly 1 argument (3 given)"这个错误
关于python PIL库ImageDraw的Draw方法的问题_第1张图片

第二段却正常运行,并成功在图片上加上了 “hello”

上网查找一波后发现了这样一篇文章https://blog.csdn.net/qq_27871973/article/details/84252488
这个情况感觉和我这个情况很类似,因为我第一段代码中读取的图片也是灰度的,第二段读取的图位深度是32。
于是我仿照文章中的方法,将第一段代码中的图片转换为RGB格式,结果运行成功。
但是背后的原理还没有求证过。先在这里记录一下这个问题,待有空求证。

你可能感兴趣的:(python学习历程,python)