2011-01-29 116 views
0

我正在嘗試爲我製作的透明Tkinter小部件添加模糊效果。在Python或C++中獲取像素顏色的最快方法?

我提出的插件與該線(片斷)部分透明

self.attributes("-alpha", 0.85) 

爲了增加我希望我需要在widget每個單獨像素的RGB值的效果。看到這個小部件只是部分不透明,我不能使用.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函數通常都是一個壞主意。 – 2011-01-29 12:44:55

回答

2

您不妨看看Python的圖片庫,你可以調用像這樣

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

那倒輸出的第一個像素在像RGB格式(255,255,255) 這是相當快的,但它不會擊敗C++我相信