У меня есть набор jpeg-файлов в zip-архиве. Я хотел бы отобразить jpeg-образ элемента в виджете Tkinter.Python 2.7 отображает изображение jpeg, содержащееся в zip-файле
У меня возникли проблемы с созданием объекта изображения. Я попытался подавать выходные данные ZipFile.open() и ZipFile.read() в Image() и PhotoImage(), все из которых приводят к тому же сообщению об ошибке: «UnsupportedOperation: seek». Documentation для Image.open() указывает, что если файловый объект указан как аргумент, объект файла должен поддерживать методы чтения, поиска и рассылки. По-видимому, «файл-подобный объект», возвращаемый 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 с zipped. Я знаю, что мои почтовые индексы хорошо сформированы, потому что я могу выполнить эту операцию, используя те же файлы, в Java и Perl (я переписываю большое приложение Java в Python/Tk).
Метод грубой силы заключается в извлечении файла-члена на диск и просто вызове Image (pathname), но я предпочел бы делать все в памяти.
Любая помощь, пожалуйста.
Может ли http://stackoverflow.com/questions/12821961/seek-a-file-within-a-zip-file-in-python-without-passing-it-to-memory помочь вам? –
Также вы должны добавить тег python, чтобы иметь больше читателей ... –
Эрик: Я видел этот пост; это не помогает, но спасибо. Я решил свою проблему, подав ZipFile.read (membername) в BytesIO, который возвращает файл с возможностью поиска. Image.open принимает его, и все после этого легко. Я приветствую любые другие решения. – fossildoc