4

wxPython を使用して Python で GUI アプリケーションを作成しており、静的コントロール ( ) に画像を表示したいと考えていますwx.StaticBitmap

wx.ImageFromStreamファイルから画像をロードするために使用できますが、これは問題なく動作します。

static_bitmap = wx.StaticBitmap(parent, wx.ID_ANY)
f = open("test.jpg", "rb")
image = wx.ImageFromStream(f)
bitmap = wx.BitmapFromImage(image)
static_bitmap.SetBitmap(bitmap)

しかし、私が本当にできるようにしたいのは、メモリ内のデータからイメージを作成することです。だから、私が書くなら

f = open("test.jpg", "rb")
data = f.read()

wx.Imageからオブジェクトを作成するにはどうすればよいdataですか?

ご協力いただきありがとうございます!

4

3 に答える 3

9

StringIOを使用して、バッファをメモリ ファイル オブジェクトにラップできるはずです。

...
import StringIO

buf = open("test.jpg", "rb").read()
# buf = get_image_data()
sbuf = StringIO.StringIO(buf)

image = wx.ImageFromStream(sbuf)
...

buf任意のデータ文字列に置き換えることができます。

于 2008-12-17T20:08:11.900 に答える
0

Python では Duck Typing を使用するため、独自のストリーム クラスを作成し、そのクラスのインスタンスを ImageFromStream に渡すことができます。read メソッドを実装してデータを返すようにするだけでよいと思います。

于 2008-12-17T20:01:11.820 に答える