-1

我正在使用来自 NSImage 的数据构建 wx.MemoryDC,但生成的代码非常缓慢。在我看来,TIFFRepresentation -> ImageFromStream步骤是减慢速度的步骤。有什么办法可以避免这一步(所有这些流式传输),并直接从 NSImage 数据初始化 MemoryDC 吗?这是示例代码:

import wx
import cStringIO
from AppKit import NSImage

app = wx.PySimpleApp()
frame = wx.Frame(None, wx.ID_ANY, "Python")
static_bitmap = wx.StaticBitmap(frame,wx.NewId(), bitmap=wx.EmptyBitmap(640, 480))
frame.Show(True)


# wget http://upload.wikimedia.org/wikipedia/commons/d/d9/Test.png
ns_image = NSImage.alloc().initWithContentsOfFile_("Test.png")

for i in range(100):

    tiffdata = ns_image.TIFFRepresentation()

    image = wx.ImageFromStream(cStringIO.StringIO(tiffdata), wx.BITMAP_TYPE_TIF)

    bitmap = image.ConvertToBitmap()

    bmdc = wx.MemoryDC(bitmap)

    # bmdc.DrawCircle(10,10, 5)
    del bmdc
    static_bitmap.SetBitmap(bitmap)


app.MainLoop()
4

2 回答 2

2

尝试使用:

bitmap = wx.BitmapFromBuffer(...)

而不是ImageFromStream.

于 2011-04-17T22:11:07.060 回答
1

回答我自己的问题:NSIimage 的接口本来就很慢,唯一可行的解​​决方案是完全避免它。

于 2011-08-13T01:04:42.787 回答