我正在使用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
对象?
感谢您的帮助!
答案 0 :(得分:8)
您应该能够使用StringIO
将缓冲区包装在内存文件对象中。
...
import StringIO
buf = open("test.jpg", "rb").read()
# buf = get_image_data()
sbuf = StringIO.StringIO(buf)
image = wx.ImageFromStream(sbuf)
...
buf
可以替换为任何数据字符串。
答案 1 :(得分:0)
因为在Python中你使用Duck Typing,你可以编写自己的流类并将该类的实例交给ImageFromStream。我认为你只需要实现read方法并让它返回你的数据。
答案 2 :(得分:0)
如果你是python3.x,你应该使用“ByteIO”和“ImageFromStream”来显示内存中的图片数据。注意,“BytesIO”参数的格式应为b“\ xff \ xd8” 以下是显示代码的图片: the format of the parameter of the BytesIO