【问题标题】:How to instantiate a stream from a buffer in wxPython Phoenix?如何从 wxPython Phoenix 中的缓冲区实例化流?
【发布时间】:2016-05-19 21:42:27
【问题描述】:

一些上下文:

  • wxPython 版本 3.0.3.dev1836+f764b32 gtk2(凤凰)
  • Python 2.7.3
  • Ubuntu 12.04

我正在尝试从流中创建图像。
未来的图像当前从内存加载到缓冲区中。

我已经尝试过:

image_stream = wx.MemoryOutputStream()  # error: no attribute 'MemoryOutputStream'
image_stream.Write( image_buffer, buffer_size )
image = wx.Image( stream )
bitmap = wx.Bitmap( image )

基本上,wx.InputStreamwx.OutputStream 及其所有祖先都是抽象类,我无法实例化它们。

您可以看到herethere,它们的子类的文档似乎丢失了。

从上面代码中写的错误也可以看出,这些类还没有实现。

有没有办法在 wxPython Phoenix 中实例化这样的流?还是解决方法?

顺便说一句,我会先写然后再从流中读取,它应该是输入流、输出流还是一个然后另一个?

【问题讨论】:

    标签: python image image-processing wxpython buffer


    【解决方案1】:

    wxImage 对象可以直接从任何支持 Python 缓冲区接口的对象创建(bytearrays memoryviews, numpy arrays, etc.)参见迁移指南中的this section 以及__init__Create 方法API documentation 中的重载,其中有一个名为 data 的参数。

    此外,任何 Python “类文件对象”都可以自动转换为 wx 流类,因此接受 stream 参数的 Image 构造函数和 Create 方法重载可以使用任何兼容的对象(打开的文件、 StringIO 等)自动生成,因此您无需创建 wx.InputStreamwx.OutputStream

    【讨论】:

    • 我终于用上了:img = wx.ImageFromBuffer( width, height, image_buffer )bitmap = wx.Bitmap( img )image_buffer 是一个 RGB 格式的 numpy 数组。
    猜你喜欢
    • 2020-01-08
    • 2010-12-28
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    相关资源
    最近更新 更多