Pythonでコミックアーカイブリーダーを作成して、Pythonをさらに習得したいのですが、ファイルを抽出して表示せずにzipアーカイブから別の画像ファイルを読み取ろうとすると問題が発生します。
.gif画像しか表示できない例(http://www.python-forum.org/pythonforum/viewtopic.php?f=4&t=3607)のあるWebサイトを見つけました。この例PhotoImage
では、実際のファイルの代わりに64ビットでエンコードされた文字列を受け入れることができる(PILバージョンではなくTkinterバージョン)を使用しています。私の研究のほとんどから、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