# 获取屏幕上某个坐标的颜色
from ctypes import *
def get_color(x, y):
gdi32 = windll.gdi32
user32 = windll.user32
# 获取颜色值
hdc = user32.GetDC(None)
# 提取RGB值
pixel = gdi32.GetPixel(hdc, x, y)
r = pixel & 0x0000ff
g = (pixel & 0x00ff00) >> 8
b = pixel >> 16
return [r, g, b]
print(get_color(0, 0))
运行结果
[104, 140, 192]
函数说明
GetDC函数根据指定的等级类型检索指定窗口普通的、典型的或特有的设备上下文环境。
对于普通设备上下文环境,GetDC在每次检索的时候部分分配给它缺省特性,对于典型和特有的设备上下文环境,GetDC不改变先前设置的特性。
在使用普通设备上下文环境绘图之后,必须调用ReleaseDc函数释放该设备上下文环境,典型和特有设备上下文环境不需要释放,设备上下文环境的个数仅受有效内存的限制。
还有一点要特别注意,getdc函数对系统的相对开销比较大,如果你的程序里使用了几百个getdc函数而又不通过ReleaseDC函数释放的话,那你机器运行速度将是龟速。
GetPixel,函数功能,该函数检索指定坐标点的像素的RGB颜色值。