当前位置: 首页 > 知识库问答 >
问题:

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

陈季
2023-03-14

我想把一张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上使用Python3。Python文件和图像位于同一文件夹中。

共有3个答案

方野
2023-03-14

安装PIL/枕头时,请使用:

pip install Pillow

或:

sudo pip install pillow
from PIL import Image
from PIL import ImageTk
import tkinter

image = Image.open('bll.jpg')
image = image.resize((20, 20))
image = ImageTk.PhotoImage(image)

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

img = PhotoImage(file=image)

也使用。PNG而不是。JPG更适合Tkinter。

米修平
2023-03-14

我也遇到了同样的问题。我有windows和Python 3.6。因此,我找到了两种解决方案,您可以使用/转换为。pngimage(与您使用的功能相同):

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()
商飞航
2023-03-14

你的代码似乎是正确的,这是在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:

(imgur将其转换为bll.png,但这也适用于我。)

更多选项:

  • 这个答案提到,tkinter只处理gif图像。尝试使用。gif图像

更新:使用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()
 类似资料:
  • 我想问一些关于python3中tkinter的帮助。我似乎无法使用以下代码在标签中显示jpeg图像文件: 它可以做png图像只是罚款,但当我尝试加载一个jpg图像,所有我我能得到的是以下错误: 我浏览了所有我能找到的类似问题,但它们似乎都回答了相同的问题:“从PIL导入ImageTk,图像”当我尝试时(目前,我正在尝试使用枕头,顺便说一句),ImageTk似乎不可用。 任何帮助都将不胜感激。

  • 我有以下问题。我生成。使用外部应用程序的GIF文件。对我来说,GIF看起来不错,我可以毫无问题地打开它们。然而,使用 要将图像添加到Tkinter标签,会出现以下错误: Tcl错误:无法识别图像文件“C:\Users\D8W\Python\hoang\combi ne\u model\u neu\test\u bauteile\SQTR-VO\prev\u F45\u SQTR.GIF”中的数据

  • 问题内容: 我在Visual Studio 2013中运行Python 2.7。以前在Spyder中运行该代码正常,但是在运行时: 我最终遇到以下错误: 为什么会这样,我该如何解决? 如建议的那样,我已经在我的Python 2.7中使用了Pillow安装程序。但是奇怪的是,我最终得到了这个: 都失败了! 问题答案: 我有一个同样的问题。 代替 解决了这个问题

  • 即使我的图像文件和代码在同一个文件夹中,我也会得到_tkinter。 我已经经历了一些其他类似的堆栈溢出问题,但没有成功;没有使用PIL,我如何解决这个问题?这是我的代码: 先谢谢你。

  • 问题内容: 我一直在寻找网络上图像识别数字的资源。我发现许多链接提供了有关该主题的大量资源。但不幸的是,这比提供帮助更令人困惑,我不知道从哪里开始。 我有一个带有5个数字的图像,没有打扰(没有验证码或类似的东西)。数字在白色背景上为黑色,以标准字体书写。 我的第一步是分离数字。我当前使用的算法非常简单,它只是检查一列是否完全为白色,因此是否为空格。然后,它会修剪每个字符,以使其周围没有白色边框。这

  • 突然之间,网络Storm对我来说不认识Javascript了。 如果我添加这样的文件: 之后我在IDE中看到的是: 如果我刷新,重新启动Webstorm,它仍然无法识别文件!网络Storm已无法使用!