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

Python 3.7,tkinter,jpg:无法识别图像文件中的数据

冯元徽
2023-03-14

我想问一些关于python3中tkinter的帮助。我似乎无法使用以下代码在标签中显示jpeg图像文件:

def changephoto(self):
    self.tmpimgpath = filedialog.askopenfilename(initialdir=os.getcwd())
    self.installimagepath.set(self.tmpimgpath)
    self.selectedpicture = PhotoImage(file=self.installimagepath.get())
    self.PictureLabel.configure(image=self.selectedpicture)

它可以做png图像只是罚款,但当我尝试加载一个jpg图像,所有我我能得到的是以下错误:

_tkinter.TclError: couldn't recognize data in image file

我浏览了所有我能找到的类似问题,但它们似乎都回答了相同的问题:“从PIL导入ImageTk,图像”当我尝试时(目前,我正在尝试使用枕头,顺便说一句),ImageTk似乎不可用。

任何帮助都将不胜感激。

共有3个答案

太叔超英
2023-03-14

由于文件路径中的相对文件路径非英语字符可能会发生此错误,因此我制作了此函数,该函数在windows和任何类型的文件路径中都非常有效:

def loadrelimages(relativepath):
    from PIL import ImageTk, Image
    import os
    directory_path = os.path.dirname(__file__)
    file_path = os.path.join(directory_path, relativepath)
    img = ImageTk.PhotoImage(Image.open(file_path.replace('\\',"/")))  
    return img

例如,装载<代码>照片_2021-08-16_18-44-28。与此代码位于同一目录中的jpg:

from tkinter import *
import os

def loadrelimages(relativepath):
    from PIL import ImageTk, Image
    import os
    directory_path = os.path.dirname(__file__)
    file_path = os.path.join(directory_path, relativepath)
    img = ImageTk.PhotoImage(Image.open(file_path.replace('\\',"/")))  
    return img
root = Tk()

canvas = Canvas(root, width=500, height=500)
canvas.pack()


loadedimage=loadrelimages('photo_2021-08-16_18-44-28.jpg')
canvas.create_image(250, 250, image=loadedimage)

root.mainloop()


试试这个!!!!

傅乐湛
2023-03-14

Chuck G提供的解决方案奏效了。我不知道为什么我最初不能导入ImageTk,但最终还是成功了。

from PIL import ImageTk
有玄天
2023-03-14

>

  • 您必须安装PILpip安装枕头

    如果pip未能成功安装pillow,您可能必须尝试pip3pip3。7(使用bash查看您有哪些选项)

    您可以使用ImageTk打开图像:

    import os
    import tkinter as tk
    from tkinter import filedialog
    from PIL import ImageTk
    
    def changephoto():
       root = tk.Tk()
       PictureLabel= tk.Label(root)
       PictureLabel.pack()
       tmpimgpath = filedialog.askopenfilename(initialdir=os.getcwd())
       selectedpicture= ImageTk.PhotoImage(file=tmpimgpath)
       PictureLabel.configure(image=selectedpicture)
    

  •  类似资料:
    • 我想把一张jpg图片放到tkinter画布上。tkinter给了我这个错误: 无法识别图像文件中的数据 我使用文档中的代码: png图像也是如此。甚至尝试将图像放入标签小部件,但也出现了相同的错误。发生了什么? 我在Mac上使用Python3。Python文件和图像位于同一文件夹中。

    • 我有以下问题。我生成。使用外部应用程序的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已无法使用!