微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PyAutoGUI 没有返回正确的 rgb 值

如何解决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 举报,一经查实,本站将立刻删除。