wxPython을 배우고 있습니다. 내 질문은 비트 맵을 만드는 방법입니다. 각 픽셀마다 R, G, B 값을 가지고 있지만 비트 맵을 만드는 방법을 모르겠습니다. 내가 사용하려고 wx.BitmapFromBuffer, 내가 어떻게이 버퍼를 만들어야 이해가 안 돼요. 각 픽셀을 살펴보고 R, G, B 구성 요소 목록에 선형 방식으로 넣었지만 예상 한대로 그리지 않았습니다. 버퍼를 어떻게 구성해야하는지 이해하고 있습니까?wxPython, 비트 맵 생성
너무 느리기 때문에 wx.MemoryDC를 사용하여 각 픽셀을 비트 맵에 그려 넣고 싶지 않습니다.
감사합니다.
편집 : wxPython 데모 - RawBitmapAccess에서 접근 방식을 사용합니다. 하나 개 퍼지 공을 -
buf = numpy.empty((w,h,3), numpy.uint8)
n = 29000
for i in xrange(w):
for j in xrange(h):
r = int(n*255*field[j,i])
if r > 253:
r = 253
buf[i, j, 0] = int(r)
buf[i, j, 1] = int(r)
buf[i, j, 2] = int(b)
#dc.SetPen(wx.Pen(wx.Colour(r,r,b)))
#dc.DrawPoint(i,j)
bmp = wx.BitmapFromBuffer(w, h, buf)
gc = wx.GraphicsContext.Create(dc)
gc.DrawBitmap(bmp, 0, 0, w, h)
는 그때 나는 내가 원하는 것을 가지고 (두 루프의 라인을 주석) 도면의 내 옛날 방식의 주석을 해제합니다. 이상한 그림이 있다는 주석을 지우지 않으면 여러 조각으로 세로로 쪼개지고, 각 조각에는 퍼지 공이 있고, 누락 된 픽셀의 세로선이있는 것처럼 보입니다. 데모 프로그램과 같은 방법으로 버퍼를 사용합니다. 왜 이상한 그림을 얻나요?
편집 2 : 알아낼 수 있습니다. 나는 루프에서 i와 j를 교환해야한다.
당신이 내 질문의 업데이트를 볼 수 있었다처럼 보인다하시기 바랍니다 – ashim
당신이 보는대로 예, 그것은 (I, J) 명령을 내리고있다. – tom10
배열의 픽셀을 개별적으로 설정하는 것이 좋은 출발점이지만 개별적으로 픽셀을 그리지 않아도 속도가 향상되므로 루프를 벡터화하면 속도가 추가로 향상됩니다. 즉, numpy 연산을 사용하여 이것을 작성하면 인덱스 위에 중첩 루프를 수행하지 않아도됩니다. – tom10