私は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ループ内の行をコメントし)、その後、私は私が欲しいものだコメントを解除した場合 - 1個のファジーボールを。私が奇妙な画像を持っているというコメントを外していないと、それはいくつかの断片のために垂直に分割されていて、それぞれはそれ自身のあいまいなボールを持っていて、欠落したピクセルの垂直線があるように見えます。 デモプログラムと同じ方法でバッファを使います。なぜ私は奇妙な画像を取得するのですか?
Edit2: 私はそれを理解します。私はループ内でiとjを入れ替えるべきです。
、のように見えるあなたは私の質問の更新時に見ることができるしてください – ashim
はい、あなたが見るように、それは、(i、j)の順序を反転です。 – tom10
配列のピクセルを個別に設定するのは良い場所ですが、ピクセルを個別に描画しないと速度が向上しますが、ループをベクトル化すると速度が向上します。つまり、numpy操作を使用してこれを書いて、インデックス上にネストされたループを持たないようにします。 – tom10