-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 に答える