使用PIL对jpg图像着色

时间:2014-09-27 23:16:40

标签: python image image-processing jpeg python-imaging-library

我使用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  

我想知道为什么会发生这种情况,以及是否有任何方法可以为不成功的图像输出红色圆圈。

1 个答案:

答案 0 :(得分:0)

那是因为原始图像是灰度的。您可以在绘制红色圆圈之前将其转换为完整RGB。在PIL库中,它是这样的代码:

pilImg = pilImg.convert("RGB")   # or "RGBA" to keep transparency