【问题标题】:Pillow OSError when loading into tkinter using Python 3.4使用 Python 3.4 加载到 tkinter 时出现 Pillow OSError
【发布时间】:2014-10-06 19:12:18
【问题描述】:

我正在从服务器加载图像,当我在数据上使用 Base64 时,我不断收到此错误。

这是我的代码:

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()

我收到此错误:

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>

【问题讨论】:

  • 你发布的代码不会运行
  • @PadraicCunningham 嗯,我更新了我的代码,我认为复制时出现了一些错误,对此感到抱歉

标签: python python-3.x tkinter python-imaging-library pillow


【解决方案1】:

如果您删除其中一些代码,您的代码就可以工作。不需要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()

结果:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 2015-09-22
    • 2016-02-05
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多