简体   繁体   English

使用Python 3.4加载到tkinter时出现枕头错误

[英]Pillow OSError when loading into tkinter using Python 3.4

I am loading an image from a server, and I keep getting this error when I use Base64 on the data. 我正在从服务器加载图像,当我在数据上使用Base64时,我一直收到此错误。

Here's my code: 这是我的代码:

import tkinter as tk
from PIL import ImageTk
root = tk.Tk()
import urllib.request
URL = "https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcSm7eLMSp4NbjGwkjU3rPokWaQI6224lQCR1qIIGIfldm4M0TgY0JKTGQLQ"
u = urllib.request.urlopen(URL)
raw_data = u.read()
u.close()
import base64
b64_data = base64.encodestring(raw_data)
image = ImageTk.PhotoImage(data=b64_data)
label = tk.Label(image=image)
label.pack()

I get this error: 我收到此错误:

Traceback (most recent call last):
   File "C:/testt.py", line 11, in <module>
image = ImageTk.PhotoImage(data=b64_data)
   File "C:\Python34\lib\site-packages\PIL\ImageTk.py", line 88, in __init__
image = Image.open(BytesIO(kw["data"]))
   File "C:\Python34\lib\site-packages\PIL\Image.py", line 2287, in open
   % (filename if filename else fp))
OSError: cannot identify image file <_io.BytesIO object at 0x0000000003152048>

Your code works, if you remove some of it. 如果删除其中的一部分,您的代码将起作用。 The base64 encoding is not needed: 不需要base64编码:

import tkinter as tk
from PIL import ImageTk
import urllib.request

root = tk.Tk()

URL = "https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcSm7eLMSp4NbjGwkjU3rPokWaQI6224lQCR1qIIGIfldm4M0TgY0JKTGQLQ"
u = urllib.request.urlopen(URL)
raw_data = u.read()
u.close()

image = ImageTk.PhotoImage(data=raw_data)
label = tk.Label(image=image)
label.pack()
tk.mainloop()

Result: 结果:

Tkinter窗口的图像

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM