2011-01-29 15 views
0

私は透明なTkinterウィジェットにぼかし効果を追加しようとしています。PythonまたはC++でピクセルカラーを取得する最速の方法は?

私は、ウィジェット内の個々のピクセルのRGB値を取得する必要が望む効果を追加するために、このライン(スニペット)

self.attributes("-alpha", 0.85) 

とウィジェットが部分的に透明になりました。ウィジェットは部分的に不透明なので、.cgetメソッドを使用することはできません。実際のRGB値ではなく、部分的に透明になる前の色のRGB値を返すためです。

私は現在、しかし、それは私の目的のために遠く遅すぎるこの機能(スニペット)

def get_pixel_colour(self, i_x, i_y): 
    i_desktop_window_id = win32gui.GetDesktopWindow() 
    i_desktop_window_dc = win32gui.GetWindowDC(i_desktop_window_id) 
    long_colour = win32gui.GetPixel(i_desktop_window_dc, i_x, i_y) 
    i_colour = int(long_colour) 
    return (i_colour & 0xff), ((i_colour >> 8) & 0xff), ((i_colour >> 16) & 0xff) 

を使用しています。ピクセルの色を取得する方法はありますか?

編集:

Pythonは、この目的のためにあまりにも遅い場合、私はまた、C++を使用することができます。 異なるx、y座標のピクセルのRGB値を取得するだけで済みます。

+1

これは本当にPythonでやったときに遅すぎると思われるようです。そこに厄介なプラットフォーム依存関係を導入したようだ。また、リアルタイムグラフィックスに関しては、 'get_pixel_color'関数は通常、とにかく悪い考えです。 –

+0

Editを参照してください.Windowsでも動作する必要があります。 – rectangletangle

+0

ああ、もうちょっと待てない別のプラットフォームの依存関係はありますか? –

答えて

2

あなたはPythonのイメージライブラリを見てみたいことがありますが(255,255,255)のような出力RGB形式の非常に最初のピクセルを それは非常に高速であるだろう。この

import Image 
im = Image.open("name_of_file.jpg") 
list_of_pixels = list(im.getdata()) 
print list_of_pixels[0] 

のようなものを呼び出すことができますが、それはいつまでも勝つことはできませんC++私は信じています

関連する問題