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,瞭解更多精彩內容


分享到:


相關文章: