我使用PIL和Tkinter编写了一个python代码,我在其中显示一个图像,并在用户单击的图像上放置一个红色圆圈。这是相关的代码。
def paint_img(event, canvas):
x, y = event.x, event.y
image_draw.ellipse((x-10, y-10, x+10, y+10), fill='red')
canvas._image_tk = ImageTk.PhotoImage(pilImg)
canvas.itemconfigure(canvas._image_id, image=canvas._image_tk)
它似乎适用于某些图像,但在某些情况下,它会显示灰色圈。我在测试图像上使用了identify
,对于成功的输出是
totestcolor.jpg JPEG 561x549 561x549+0+0 8-bit DirectClass 18.3kb
对于不成功的输出,输出为:
totestcolor1.jpg JPEG 1533x1095 1533x1095+0+0 8-bit PseudoClass 256c 70.4kb
我想知道为什么会发生这种情况,以及是否有任何方法可以为不成功的图像输出红色圆圈。
答案 0 :(得分:0)
那是因为原始图像是灰度的。您可以在绘制红色圆圈之前将其转换为完整RGB。在PIL库中,它是这样的代码:
pilImg = pilImg.convert("RGB") # or "RGBA" to keep transparency