import pyautogui as auto
屏幕截图()函数
screenshot()
将返回 Image 对象(有关详细信息,请参阅枕头或PIL模块文档)。传递文件名的字符串将屏幕快照保存到文件中,并将其作为Image对象返回。
# 有一个可选的 region 关键字参数,如果不希望看到整个屏幕的截图。
# 可以传递区域的左、顶、宽和高的四个整数元组来捕获:
pic_1 = auto.screenshot()
pic_2 = auto.screenshot('my_screenshot.png') #在1920 x 1080屏幕上,screenshot()函数大约需要100毫秒
pic_3 = auto.screenshot("my_screenshot.png ",region=(0,0, 300, 400))
定位函数 (非常重要)
在#1920 x 1080屏幕上,定位函数调用大约需要1或2秒 ,不适用于游戏脚本调用,原因是太慢
locateOnScreen()
例如,假设计算器应用程序在您的计算机上运行,如下所示:
# 当启动计算器界面的时候,这时您不能直接调用moveTo()和click()函数,如果您不知道计算器按钮的确切屏幕坐标。
# 每次启动时,计算器都会出现在一个稍微不同的地方,因此每次都需要重新查找坐标。
# 但是,如果您有该按钮的图像,例如7按钮的图像:
# 就直接用图片识别功能定位它的屏幕坐标(是元组,左、上、右、下),这个返回结果(元组)也可以给center()函数方法,转化成x,y的坐标值
# 如果屏幕上找不到图像,locateOnScreen() 则返回结果为:None.
number7_location = auto.locateOnScreen('calc7key.png') #传入按钮的图片
print(number7_location) # 返回屏幕所在位置
>>>(1416, 562, 50, 41)
x,y = auto.center(number7_location ) # 转化为 x,y坐标
print(number7_location) #按键7的坐标是1441,582
>>> (1441, 582)
auto.click(number7_location)
# 点击坐标,click()它是支持元组格式的坐标传入的
#根据图片识别定位x,y坐标(比较好用)
locateCenterOnScreen(image, grayscale=False)
返回找到的第一个截图Image对象在屏幕上的中心坐标(x, y),如果没找到返回None
auto.locateCenterOnScreen('1.png',grayscale=False)
# 参数grayscale是是否转灰度
>>> (1441, 582)
locateAllOnScreen(image, grayscale=False)
# 返回找到的所有相同截图Image对象在屏幕上的坐标,返回结果是(left, top, width, height)的‘生成器’
auto.locateAllOnScreen('xxx.png',grayscale=False) #遍历找到屏幕上所有显示为xxx的图像对象坐标,转灰度操作=关闭
locate(needleImage, haystackImage, grayscale=False)
auto.locate('xxx.png')
# 返回找到的第一个截图Image对象在haystackImage里面的坐标(left, top, width, height),如果没找到返回None
locateAll(needleImage, haystackImage, grayscale=False)
auto.locateAll('xxx.png')
# 返回找到的所有相同截图Image对象在haystackImage里面的坐标(left, top, width, height)的生成器