0

作成中の透明な Tkinter ウィジェットにぼかし効果を追加しようとしています。

この行でウィジェットを部分的に透明にしました (スニペット)

self.attributes("-alpha", 0.85)

希望する効果を追加するには、ウィジェット内の個々のピクセルの RGB 値を取得する必要があります。ウィジェットが部分的に不透明であるため、実際の RGB 値ではなく、塗りつぶし RGB 値 (部分的に透明になる前の色) を返すため、 .cgetメソッドを使用できません)。

私は現在この機能を使用しています(スニペット)

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 値を取得するだけです。

4

1 に答える 1

3

このようなものを呼び出すことができるPython Image Libraryを見てみたいと思うかもしれません

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

これは、(255,255,255) のような RGB 形式で最初のピクセルを出力します。かなり高速ですが、C++ に勝るものはありません。

于 2011-03-08T19:21:41.677 に答える