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)

  • 1
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值