Tkinter 错误:无法识别图像文件中的数据

新手上路,请多包涵

我正在尝试将 jpg 图像放到 tkinter 画布上。 tkinter 给我这个错误:

无法识别图像文件中的数据

我使用文档中的代码:

 canv = Canvas(root, width=80, height=80, bg='white')
canv.grid(row=2, column=3)

img = PhotoImage(file="bll.jpg")
canv.create_image(20,20, anchor=NW, image=img)

png 图像也是如此。甚至试图将图像放入标签小部件中,但得到了同样的错误。怎么了?

我在 Mac 上使用 Python 3。 Python 文件和图像在同一个文件夹中。

原文由 Igor234 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 766
2 个回答

您的代码似乎是正确的,这是在 Windows 7 (Python 3.6) 上为我运行的:

 from tkinter import *
root = Tk()

canv = Canvas(root, width=80, height=80, bg='white')
canv.grid(row=2, column=3)

img = PhotoImage(file="bll.jpg")
canv.create_image(20,20, anchor=NW, image=img)

mainloop()

导致这个 tkinter GUI:

图形用户界面 此图像为 bll.jpg图片

(imgur 将其转换为 bll.png 但这对我也有用。)


更多选择:

  • 这个答案 提到,tkinter 仅使用 gif 图像。尝试使用 .gif 图像。
  • 如果这不起作用,请使用 PIL本答案 中所述。

更新: 解决方案 PIL

 from tkinter import *
from PIL import ImageTk, Image
root = Tk()

canv = Canvas(root, width=80, height=80, bg='white')
canv.grid(row=2, column=3)

img = ImageTk.PhotoImage(Image.open("bll.jpg"))  # PIL solution
canv.create_image(20, 20, anchor=NW, image=img)

mainloop()

原文由 bastelflp 发布,翻译遵循 CC BY-SA 3.0 许可协议

我遇到了同样的问题。我有 Windows 和 Python 3.6。所以我找到了两个解决方案,要么使用/转换为 .png 图像(具有与您使用的相同的功能):

 photo = PhotoImage('xyz.png')
l = Label(image = photo)
l.pack()

或者,如果你想读取 .jpg 文件,然后使用 PIL 库读取和显示这样的图像:

 from PIL import ImageTk, Image
img = ImageTk.PhotoImage(Image.open("xyz.jpg"))
l=Label(image=img)
l.pack()

原文由 Nachiket 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题