2012-06-07 99 views
3

我想在python中創建一個漫畫存檔閱讀器,作爲練習來教會自己更多python,但是我一直有麻煩試圖從zip壓縮文件中讀取不同的圖像文件,而沒有提取文件,然後顯示它們。顯示從zip壓縮文件讀取的圖像python

我發現一個網站的例子(http://www.python-forum.org/pythonforum/viewtopic.php?f=4 &噸= 3607),只能顯示.gif圖像。該示例使用PhotoImage(Tkinter版本不是PIL版本),它可以接受64位編碼字符串而不是實際文件。從我的大部分研究中看來,PIL是我想用來處理gif以外的圖像的,但我找不到像Tkinter.PhotoImage類似的方式調用PIL.ImageTk.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 
+0

可能是一個很好的時間打出來['StringIO'(http://docs.python.org/library/stringio.html)進行一些測試。 – sarnold

回答

0

您可以使用PythonMagick創建Image像這樣:

from PythonMagick import * 

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

使用的wxPython然後顯示其作爲PythonMagick readme建議 「顯示」 部分。

+0

或者如果你很懶,只需將圖像數據傳送到display-'命令。 – holygeek