我想在 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()
交给 toPIL.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