如何解决PyAutoGUI 没有返回正确的 rgb 值
我正在使用 python 3.9 和 pyautogui==0.9.52,我试图获取屏幕上某个像素的 rgb 值。结果类似于,如果我有一个红色像素的坐标,它会返回 rgb 值作为 (30,30,30)
。
如果我使用displayMousePosition()
,我首先必须运行sys.platform = '_'
才能得到一个rgb值,即使这样它仍然是错误的rgb值。
如果我使用 pyautogui.pixel(x,y)
,它也会返回错误的 rgb 值。它可能与不兼容的版本有关吗?有人知道如何解决这个问题吗?
解决方法
我遇到了类似的问题。我不明白为什么 pyautogui 为所有像素返回 (30,30,30) 但我找到了 pyautogui 获取像素颜色的替代方法。
它叫做 win32gui pip install win32
def get_pixel_colour(i_x,i_y):
import win32gui
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)
win32gui.ReleaseDC(i_desktop_window_id,i_desktop_window_dc)
return (i_colour & 0xff),((i_colour >> 8) & 0xff),((i_colour >> 16) & 0xff)
来源:https://rosettacode.org/wiki/Color_of_a_screen_pixel#Python
它返回准确的结果。示例:(0,127,237).
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。