2011-02-23 3 views
-1

NSImage의 데이터를 사용하여 wx.MemoryDC를 구성하고 있지만 결과 코드는 매우 느립니다. 그것은 내게 보인다 TIFFRepresentation -> ImageFromStream 단계는 사물을 느리게하는 것입니다. 이 단계 (이 모든 스트리밍)를 피할 수있는 방법이 있습니까? NSImage 데이터에서 직접 MemoryDC를 초기화 할 수 있습니까? 다음 샘플 코드는 다음과 같습니다 사용파이썬의 NSImage에서 비트 맵 데이터 추출하기

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() 
+0

이것은 이미지를 표시하는 다소 복잡한 방식으로 보입니다. –

답변

1

내 자신의 질문에 답하기 : NSIimage에 대한 인터페이스는 본질적으로 느리며 유일한 실행 가능한 솔루션은이를 완전히 피하는 것입니다.

2

보십시오 : 대신 ImageFromStream

bitmap = wx.BitmapFromBuffer(...) 

.