2016-05-19 1 views
0

Некоторые контекст:Как создать экземпляр потока из буфера в wxPython Phoenix?

  • 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.InputStream, wx.OutputStream и все их предки абстрактные классы, я не могу их экземпляры.

Как вы можете видеть here и there, документация по их подклассам, кажется, отсутствует.

Из приведенной выше ошибки следует, что эти классы еще не реализованы.

Есть ли способ создать такой поток в wxPython Phoenix? Или обходной путь?

Кстати, как я буду писать, а затем читать из потока, должен ли он быть потоком ввода, потоком вывода или одним, а затем другим?

ответ

2

wxImage объекты могут быть созданы непосредственно из любого объекта, который поддерживает интерфейс буфера Python, (ByteArray, memoryviews, Numpy массивов и т.д.) См this section в руководстве по миграции, а также __init__ и Create метод перегрузок в API documentation, которые имеют параметр с именем data.

Кроме того, любой «файл-подобный объект» Python может быть автоматически преобразован в классы потока wx, поэтому конструкторы Image и Overloads Create, которые принимают параметры stream, могут использовать любой совместимый объект (открытый файл, StringIO и т. д.), поэтому вам не нужно будет делать wx.InputStream или wx.OutputStream.

+0

Я наконец использовал: 'img = wx.ImageFromBuffer (width, height, image_buffer)' и 'bitmap = wx.Bitmap (img)'. С 'image_buffer' является массив numpy в формате RGB. – DRz

 Смежные вопросы

  • Нет связанных вопросов^_^