【问题标题】:How do I create a wx.Image object from in-memory data?如何从内存数据创建 wx.Image 对象?
【发布时间】:2010-09-27 09:51:30
【问题描述】:

我正在使用 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()

如何从data 创建wx.Image 对象?

感谢您的帮助!

【问题讨论】:

    标签: python wxpython wxwidgets


    【解决方案1】:

    您应该能够使用StringIO 将缓冲区包装在内存文件对象中。

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

    buf 可以替换为任何数据字符串。

    【讨论】:

      【解决方案2】:

      由于在 Python 中使用 Duck Typing,因此您可以编写自己的流类并将该类的实例交给 ImageFromStream。我认为您只需要实现 read 方法并使其返回您的数据即可。

      【讨论】:

        【解决方案3】:

        如果你是python3.x,你应该使用“ByteIO”和“ImageFromStream”来显示内存中的图片数据。注意,“BytesIO”的参数格式应该是b“\xff\xd8” 下面是图片展示代码: the format of the parameter of the BytesIO

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-09-28
          • 1970-01-01
          • 2020-07-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-08
          相关资源
          最近更新 更多