Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I create a wx.Image object from in-memory data?

I'm writing a GUI application in Python using wxPython and I want to display an image in a static control (wx.StaticBitmap).

I can use wx.ImageFromStream to load an image from a file, and this works OK:

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)

But, what I really want to be able to do is create the image from data in memory. So, if I write

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

how can I create a wx.Image object from data?

Thanks for your help!

like image 410
ChrisN Avatar asked Jan 24 '23 23:01

ChrisN


1 Answers

You should be able to use StringIO to wrap the buffer in a memory file object.

...
import StringIO

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

image = wx.ImageFromStream(sbuf)
...

buf can be replaced with any data string.

like image 198
codelogic Avatar answered Feb 04 '23 14:02

codelogic