需要帮助将 JPG 链接转换为 GIF 格式
Posted
技术标签:
【中文标题】需要帮助将 JPG 链接转换为 GIF 格式【英文标题】:Need help converting JPG link to GIF format 【发布时间】:2016-01-05 18:10:53 【问题描述】:我正在尝试从网站获取图像以显示在标签小部件上,但 Tkinter 仅接受 GIF 和 BMP 格式。我找到的几乎所有图像都是 JPG 或 PNG。 我现在的代码如下:
from urllib import urlopen
from Tkinter import *
from PIL import Image
import Tkinter as tk
root = Tk()
url = "http://www.wired.com/wp-
content/uploads/2015/03/10182025tonedfull-
660x441.jpg"
u = urlopen(url)
raw_data = u.read()
u.close()
import base64
b64_data = base64.encodestring(raw_data)
image = tk.PhotoImage(data=b64_data)
label = tk.Label(image=image)
label.pack()
root.mainloop()
我收到一条错误消息,提示它无法识别图像。如果有人知道如何解决它,请告诉我。谢谢。
【问题讨论】:
在 tcl/tk 8.6+ 中,PhotoImage 也适用于 .png 文件,但其他任何东西仍然需要 PIL 或枕头。 8.6 附带 3.4、3.5 PSF Windows 安装程序、一些 Linux 系统和一些备用 Mac 安装程序。 【参考方案1】:以下内容应该可以让您加载 JPG 文件:
from PIL import Image, ImageTk
from cStringIO import StringIO
from urllib import urlopen
from Tkinter import *
from PIL import Image
import Tkinter as tk
root = Tk()
url = "http://www.wired.com/wp-content/uploads/2015/03/10182025tonedfull-660x441.jpg"
u = urlopen(url)
raw_data = u.read()
u.close()
image_file = Image.open(StringIO(raw_data))
photo_image = ImageTk.PhotoImage(image_file)
label = tk.Label(image=photo_image)
label.pack()
root.mainloop()
您不需要对其进行 base64 编码,但您需要使用ImageTk
来加载图像。这将显示如下:
【讨论】:
【参考方案2】:你不能使用带图像的 Jpg,你还必须导入 ImageTk
一个非常基本的工作示例可能是:
import io
from PIL import Image, ImageTk
import Tkinter as tk
from urllib2 import urlopen
root = tk.Tk()
url = "http://www.wired.com/wp-content/uploads/2015/03/10182025tonedfull-660x441.jpg"
image_bytes = urlopen(url).read()
data_stream = io.BytesIO(image_bytes)
pil_image = Image.open(data_stream)
tk_image = ImageTk.PhotoImage(pil_image)
label = tk.Label(root, image=tk_image, bg='brown')
label.pack(padx=5, pady=5)
root.mainloop()
【讨论】:
以上是关于需要帮助将 JPG 链接转换为 GIF 格式的主要内容,如果未能解决你的问题,请参考以下文章