gpt4 book ai didi

Python 2.7显示zip文件中包含的jpeg图像

转载 作者:太空宇宙 更新时间:2023-11-03 17:40:05 24 4
gpt4 key购买 nike

我的 zip 存档中有一组 jpeg 文件。我想在 Tkinter 小部件中显示成员(member) jpeg 图像。

我在创建 Image 对象时遇到问题。我尝试将 ZipFile.open() 和 ZipFile.read() 的输出提供给 Image() 和 PhotoImage(),所有这些都会导致相同的错误消息:“UnsupportedOperation:seek”。 Documentation for Image.open() 指出,如果给出文件对象作为参数,则该文件对象必须支持 read、seek 和tell 方法。显然,ZipFile.open() 返回的“类文件对象”不符合条件。

zfile = zipfile.ZipFile(filename,'r')
...
filelikeobject = zfile.open(membername,'r')
image = Image.open(filelikeobject)

File "/usr/lib/python2.7/dist-packages/PIL/Image.py", line 1967, in open
fp.seek(0)
UnsupportedOperation: seek

我找不到任何处理压缩 jpeg 文件的相关帖子。我知道我的 zip 格式良好,因为我可以使用相同的文件在 Java 和 Perl 中执行此操作(我正在用 Python/Tk 重写一个大型 Java 应用程序)。

一种强力方法是将成员文件提取到磁盘,然后简单地调用 Image(pathname),但我宁愿在内存中完成所有操作。

请提供任何帮助。

最佳答案

我能够从(不可查找的)ZipFile 对象创建可查找的内存文件,如下所示:

from io import BytesIO
import zipfile
from PIL import Image, ImageTk
...
zfile = zipfile.ZipFile(filename,'r') # non-seekable
memberlist = zfile.namelist()
...
zfiledata = BytesIO(zfile.read(membername)) # seekable
image = Image.open(zfiledata) # image.show() will display
photo = ImageTk.PhotoImage(image)

照片可以在任何采用图像对象(例如 Canvas 、标签等)的 Tk 小部件中使用

在我第一次尝试上述代码时,我收到一条有关丢失文件的错误消息。显然 ImageTk 不是标准 2.7 安装的一部分。我在 SO post 中找到了安装它的说明.

关于Python 2.7显示zip文件中包含的jpeg图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30683660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com