代码之家  ›  专栏  ›  技术社区  ›  ChrisN

如何从内存中的数据创建wx.Image对象?

  •  4
  • ChrisN  · 技术社区  · 17 年前

    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 ?

    谢谢你的帮助!

    3 回复  |  直到 17 年前
        1
  •  9
  •   codelogic    17 年前

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

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

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

        2
  •  0
  •   PEZ    17 年前

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

        3
  •  0
  •   ranaRao    8 年前

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

    推荐文章