Python pyautogui分辨率不同造成的图片定位与鼠标位置不一致的解决方法
Posted Jason_WangYing
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python pyautogui分辨率不同造成的图片定位与鼠标位置不一致的解决方法相关的知识,希望对你有一定的参考价值。
最近在mac上使用pytautogui时候发现屏幕获取的size与截全屏获取的图片的size的大小不一致,根据图片定位的位置鼠标挪移过去发现与真正需要的位置也不一致,最后发现是分辨率的问题。最后想了下,可以根据分辨率来解决这个问题。
import pyautogui
import time
pyautogui.PAUSE = 1 # 调用在执行动作后暂停的秒数,只能在执行一些pyautogui动作后才能使用,建议用time.sleep
pyautogui.FAILSAFE = True # 启用自动防故障功能,左上角的坐标为(0,0),将鼠标移到屏幕的左上角,来抛出failSafeException异常
'''设置屏幕分辨率'''
screenwidth,screenheight = pyautogui.size()
img = pyautogui.screenshot('img/all_screen.png')
screen_dpi = int(img.size[0]/screenwidth)
# screen_dpi就是获取到的分辨率,mac老式电脑是@2x,基本就是2倍分辨率。screen_dpi=2
# 截取图片,这里的图片分辨率是@2x分辨率
img = pyautogui.screenshot("img/screen.png",region(0,0,1280*screen_dpi,800*screen_dpi))
print(img.size)
# 这里截屏时,图片的分辨率就需要在屏幕size上*分辨率
#根据图片定位,再挪移鼠标
img_local = pyautogui.locateOnScreen("img/project.png",confidence=0.7)
#移动鼠标
pyautogui.moveTo(img_local[0]/screen_dpi,img_local[1]/screen_dpi,duration=2,tween=pyautogui.easeInOutQuad)
以上是关于Python pyautogui分辨率不同造成的图片定位与鼠标位置不一致的解决方法的主要内容,如果未能解决你的问题,请参考以下文章
python使用笔记:pyautogui自动化控制鼠标和键盘