Phoenixでは画像はwx.Imageクラスで扱う。
wx.Imageインスタンスを作成するときは、
import wx
img = wx.Image(filename)
のようにファイル名を指定するドキュメントやチュートリアルばかり。
しかし、docをよく読むと、streamもパラメータとして渡せることになっている。
このstreamを使えばbyteになっている画像も表示できるだろう。
どうやって使うのか。試行錯誤をしてみると、どうやら以下の感じでいいみたい。
import io
import wx
with open('someimage.png', 'rb') as f:
# ここのbyte_dataを好きなものに置き換えればいける
byte_data = f.read()
bytesio = io.BytesIO(byte_data)
img = wx.Image(bytesio)
で出来上がり。作成したwx.Imageは用済みになったら、
img.Destroy()
をすべきかも。(まだ確かめてない)
ちなみに画面に映すには、wx.StaticBitmapが紹介されている。
本当に表示するだけなので、不満なら自分でdc.DrawBitmap()した方が良さそう。


コメント