显示从zip存档python读取的图像

时间:2012-06-07 23:29:31

标签: python image zip tkinter python-imaging-library

我想在python中创建一个漫画档案阅读器,作为练习自学更多python但是我一直在尝试从zip存档中读取不同的图像文件而不提取文件然后显示它们。

我发现了一个网站,其中包含一个只能显示.gif图像的示例(http://www.python-forum.org/pythonforum/viewtopic.php?f=4&t=3607)。该示例使用PhotoImage(Tkinter版本而不是PIL版本),它可以接受64位编码的字符串而不是实际文件。从我的大部分研究来看,PIL看起来像是我想用来处理gif以外的图像,但我找不到以类似于PIL.ImageTk.PhotoImage的方式调用Tkinter.PhotoImage的方法。获取数据流而不是实际文件。

有什么办法可以将从zipfile.read()收到的数据交给PIL.ImageTk.PhotoImage吗?我可以使用另一个库来处理图像吗? Tkinter不是我正在编写的程序的要求所以如果有一个更好的小部件框架我应该使用我不介意改变。

编辑: 所以我想通过PIL和tkinter来做到这一点。

z = zipfile.ZipFile("zipfile.zip", "r")

data = z.read(z.namelist()[0])    #Read in the first image data
dataEnc = StringIO(data)          #Encode the raw data to be used by Image.open()

img = Image.open(dataEnc)         #Open the image
pimg = ImageTk.PhotoImage(img)    #Make tk compatible image

2 个答案:

答案 0 :(得分:0)

您可以使用PythonMagick创建Image,如下所示:

from PythonMagick import *

data = zipfile.read()
img = Image(Blob(data))

然后按照“显示”部分下的PythonMagick readme中的建议,使用wxPython显示它。

答案 1 :(得分:-1)

查看原帖,了解我如何解决此问题