PyAutoGUI 中文帮助文档-截图功能

PyAutoGUI 中文帮助文档-截图功能

PyAutoGui是一个跨平台GUI自动化库。

PyAutoGUI是一个Python模块,用于以编程方式控制鼠标和键盘。

PyPutoGUI可以从pip工具安装或从PyPI下载

https://pypi.python.org/pypi/PyAutoGUI

源代码可在以下网址获得:https://github.com/asweigart/pyautogui

------------------------------------------------------------------------

本文主要介绍截图功能和图像匹配

截图功能

PyAutoGUI可以截取屏幕截图,将其保存到文件中,并在屏幕中定位图像。 如果您有一个小图像,例如需要单击并希望在屏幕上找到它,这个功能将非常有用。 这些功能由PyScreeze模块提供,它与PyAutoGUI一起安装。

屏幕截图功能需要Pillow模块。 OS X使用操作系统附带的screencapture命令。 Linux使用scrot命令,可以通过运行sudo apt-get install scrot来安装。

Special Notes About Ubuntu

关于Ubuntu的特别说明

不幸的是,Ubuntu似乎在安装Pillow时存在一些不足之处。 Ubuntu上开箱即用的Pillow不包含PNG和JPEG支持。 以下链接提供了更多信息:https:// stackoverflow.com / questions / 7648200 / pip-install-pil-e-tickets-1-no-jpeg-png-support http://ubuntuforums.org/showthread.php?t= 1751455

The screenshot() Function

调用screenshot()将返回一个Image对象(有关详细信息,请参阅Pillow或PIL模块文档)。 传递文件名字符串会将屏幕截图保存到文件中,并将其作为Image对象返回。

PyAutoGUI 中文帮助文档-截图功能

在1920 x 1080的屏幕上,screenshot()函数大约需要100毫秒 - 它并不快,但速度并不慢 如果您不想要整个屏幕的屏幕截图,还有一个可选的区域关键字参数。 您可以传递区域region左侧,顶部,宽度和高度的四个整数元组来捕获

PyAutoGUI 中文帮助文档-截图功能

The Locate Functions

定位功能

如果你有对应的图像文件,可以在屏幕上直观地找到它的位置。 例如,假设计算器应用程序正在您的计算机上运行,看起来像这样:

PyAutoGUI 中文帮助文档-截图功能

如果你不知道确切计算器按钮的屏幕坐标,你不能调用moveTo()和click()函数点击。 每次启动计算器时,计算器都会显示在略有不同的位置 每次重新找到坐标。 但是,如果有按钮的图像,例如7按钮的图像:

PyAutoGUI 中文帮助文档-截图功能

你可以调用locateOnScreen('calc7key.png')函数来获取屏幕坐标。 返回值是一个4整数元组:(左,顶,宽,高)。 这个元组可以传递给center()以获得X和Y.

坐标在该区域的中心。 如果在屏幕上找不到图像,则locateOnScreen()返回None

PyAutoGUI 中文帮助文档-截图功能

locateCenterOnScreen()函数可能是最常使用的函数:

PyAutoGUI 中文帮助文档-截图功能

在1920 x 1080屏幕上,定位功能调用大约需要1或2秒。这对于动作视频游戏来说可能太慢,但适用于大多数目的和应用程序。

有几个“定位”功能。他们都开始查看屏幕左上角(或图像)并向右看,然后向下看。参数可以是a

•locateOnScreen(image,grayscale = False) - 返回屏幕上第一个找到的图像实例的(左,顶部,宽度,高度)坐标。如果在屏幕上找不到,则返回None。

•locateCenterOnScreen(image,grayscale = False) - 返回屏幕上第一个找到的图像实例中心的(x,y)坐标。如果在屏幕上找不到,则返回None。

•locateAllOnScreen(image,grayscale = False) - 返回一个生成器(左,顶部,宽度,高度)元组,用于在屏幕上找到图像的位置。

•locate(needleImage,haystackImage,grayscale = False) - 返回haystackImage中第一个找到的needleImage实例的(左,顶部,宽度,高度)坐标。如果在屏幕上找不到,则返回None。

•locateAll(needleImage,haystackImage,grayscale = False) - 返回一个生成(left,top,width,height)元组的生成器,用于在haystackImage中找到needleImage的位置

“locate all”函数可以在for循环中使用或传递给list():

PyAutoGUI 中文帮助文档-截图功能

这些“定位”功能相当耗时, 他们可以花一整秒钟来运行。 加速它们的最好方法是传递一个区域

Region参数(4个整数元组(左,上,宽,高)),只搜索屏幕的较小区域而不是全屏:

PyAutoGUI 中文帮助文档-截图功能

Grayscale Matching

灰度匹配

或者,您可以将灰度= True传递给locate函数,以提供轻微的加速(约30%-ish)。 这会使图像和屏幕截图中的颜色去饱和,从而加快定位速度,但可能导致误判。

PyAutoGUI 中文帮助文档-截图功能

Pixel Matching

像素匹配

要获取屏幕截图中像素的RGB颜色,请使用Image对象的getpixel()方法:

PyAutoGUI 中文帮助文档-截图功能

或者作为单个函数,调用pixel()PyAutoGUI函数,它是以前调用的函数:

PyAutoGUI 中文帮助文档-截图功能

如果您只需要验证单个像素是否与给定像素匹配,请调用pixelMatchesColor()函数,向其传递它代表的颜色的X坐标,Y坐标和RGB元组:

PyAutoGUI 中文帮助文档-截图功能

可选的tolerance关键字参数指定在匹配时每个红色,绿色和蓝色值可以变化的程度:

PyAutoGUI 中文帮助文档-截图功能

--------------------------------------------------------------------------------

请关注头条pyhelloworld,了解更多精彩内容


分享到:


相關文章: