我正在尝试将jpg图像放到tkinter画布上。 tkinter给了我这个错误:
无法识别图像文件中的数据
我使用文档中的代码:
\n
与png图像相同。甚至试图将图像放入标签小部件,但得到了同样的错误。怎么了?
我在Mac上使用Python 3。 Python文件和图像位于同一文件夹中。
答案 0 :(得分:7)
您的代码似乎正确,这是在Windows 7上运行的(Python 3.6):
<!DOCTYPE html>
<meta charset="utf-8">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="stylesheet" type="css/text" href="">
<title>Json and Ajax</title>
</head>
<style>
h1
{
margin-bottom: 60px;
}
.boxvalue
{
width:150px;
height: 150px;
border: 2px solid rgb(199, 91, 91);
display: inline-block;
margin: 20px;
}
.Colorname
{
font-size: 18px;
font-weight: 600;
margin: 20px;
display: inline-block;
text-align: center;
}
</style>
<body>
<div class="container-fluid">
<header>
<h1>Colors</h1>
</header>
<div id="ColorArea">
</div>
</div>
<script src="colorequest.js"></script>
</body>
产生了这个tkinter GUI:
将此图片设为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()
:
(imgur将其转换为bll.jpg
,但这也适用于我。)
更多选项:
bll.png
张图片。尝试使用gif
图片。.gif
更新:PIL
的解决方案:
PIL
答案 1 :(得分:4)
我遇到了同样的问题。我有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()
答案 2 :(得分:1)
通过以下方式安装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)
对于Tkinter,也可以使用.PNG而不是.JPG。
答案 3 :(得分:0)
列表的另一种替代解决方案...
filename = ImageTk.PhotoImage(Image.open('imagename.jpeg' ))
background_label = tk.Label(self.root, image=filename)
background_label.place(x=0, y=0, relwidth=1, relheight=1)
答案 4 :(得分:0)
为Python安装OpenCV软件包:
pip install opencv-python
然后尝试以下代码:
import cv2
Img = cv2.imread("xxxxx.png")
cv2.imwrite("xxxxx.png",img)
# Your code goes here!