Python - 从URL中打开Tkinter中的图像 - 不使用PIL

时间:2017-10-24 10:09:31

标签: python image tkinter python-3.6

我需要在tk窗口中显示图像,但只能使用这些功能来执行此操作;

from urllib.request import urlopen
from re import findall, MULTILINE, DOTALL
from webbrowser import open as webopen
from os import getcwd
from os.path import normpath
from tkinter import *
from sqlite3 import *
from datetime import datetime

我在想,只要通过tkinter的标准功能,我可以通过某种方式实现这一目标,但尚未找到任何可行的方法。

我或我可以尝试找到将图像转换为GIF的方法。请注意,系统中不能存储任何图像。

我需要显示的图片是JPG或PNG,例如this

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

如上所述here

  

PhotoImage类可以从文件中读取GIF和PGM / PPM图像:

photo = PhotoImage(file="image.gif")

photo = PhotoImage(file="lenna.pgm")
     

PhotoImage还可以从字符串中读取base64编码的GIF文件。您可以使用它在Python源代码中嵌入图像(使用base64模块中的函数将二进制数据转换为base64编码的字符串):

正如下面的评论和here所指出的那样,你也可以使用PhotoImage的PNG图像。

tkinter中的图像必须作为要绘制的PhotoImage对象传入,为了获得PhotoImage个对象,图像必须是上述格式之一。

因此,您需要找到一种方法,使用您可用的模块以其中一种格式获取图像。

答案 1 :(得分:0)

Tcl / Tk模块Img允许您使用PhotoImage加载JPEG和PNG(以及其他格式)。该模块包含在Tcl / Tk的一些打包发行版中。所以值得检查它是否安装在您正在使用的计算机上。为此,请尝试使用以下命令加载:

widget.tk.eval('package require Img')

widget可以是任何Tkinter小部件。

如果它返回版本号,则会安装并加载它,以便您可以使用它并打开JPEG图像,只需执行

PhotoImage(file='/my/image.jpg')