【Python】PyAutoGUIによるスクリーンショットの撮影

【Python】PyAutoGUIによるスクリーンショットの撮影 プログラミング

「プログラムで自動的に画面キャプチャを行いたい」
「Pythonでスクリーンショットを行うライブラリに悩んでいる」

このような場合には、この記事が参考になります。
この記事では、PyAutoGUIを利用したスクリーンショットについて解説しています。

本記事の内容

  • Pythonでスクリーンショットを行う
  • PyAutoGUIのインストール
  • 【動作確認】PyAutoGUIによるスクリーンショットの撮影

それでは、上記に沿って解説していきます。

Pythonでスクリーンショットを行う

Pythonでスクリーンショットを行う場合、大きく以下の二つが選択肢となります。

  • PyAutoGUI
  • ImageGrab

ここで言うスクリーンショットとは、デスクトップを対象にしています。
ブラウザでスクリーンショットを撮る場合には、次の記事をご覧ください。

デスクトップのスクリーンショットに話を戻します。
この場合は、二つの選択肢がありました。

では、どちらを採用したらいいのでしょうか?
単純に速度を求めるなら、ImageGrabで十分です。
名前からして、それに特化しています。

しかし、ここではPyAutoGUIを用いた方法を採用します。
それは、「PyAutoGUI、最高!!」だからです。

ちゃんと説明すると、PyAutoGUIには拡張性があります。
PyAutoGUIを簡単に言うと、RPAのためのPythonライブラリです。

覚えておけば、Pythonでの可能性が広がります。
詳細は、次の記事で説明しています。

上記の記事を参考にして、最新版のPyAutoGUIをインストールします。

PyAutoGUIのインストール

2021年11月時点では、PyAutoGUI 0.9.53が最新バージョンとなります。

久しぶりにバージョンアップしたようです。

今回は、次のバージョンのPythonで検証しています。

>python -V 
Python 3.9.8

まずは、現状のインストール済みパッケージを確認しておきます。

>pip list 
Package     Version 
----------- ------- 
pip         21.3.1 
setuptools  58.5.3

次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。

python -m pip install --upgrade pip setuptools

では、PyAutoGUIのインストールです。
PyAutoGUIのインストールは、以下のコマンドとなります。

pip install PyAutoGUI

インストールは、すぐに終わります。
では、どんなパッケージがインストールされたのかを確認しましょう。

>pip list 
Package     Version 
----------- ------- 
MouseInfo   0.1.3 
pip         21.3.1 
PyAutoGUI   0.9.53 
PyGetWindow 0.0.9 
PyMsgBox    1.0.9 
pyperclip   1.8.2 
PyRect      0.1.4 
PyScreeze   0.1.28 
pytweening  1.0.4 
setuptools  58.5.3

依存関係のあるパッケージが、インストールされています。
それほど多くはなく、既存環境に影響はほぼないでしょう。

以上、PyAutoGUIのインストールについての説明でした。
次は、PyAutoGUIを使ってスクリーンショットの撮影を行います。

PyAutoGUIによるスクリーンショットの撮影

スクリーンショットを撮るためのコードは、以下。

import pyautogui 

screen_shot = pyautogui.screenshot() 
screen_shot.save('test.png')

上記を実行して、問題なければ画像が作成されます。
同じディレクトリ上に「test.png」が確認できます。

上手く行けばOKですが、次のようなエラーが出る場合があります。
その場合は、次の対応が必要です。

エラーが出る場合

pyscreeze.PyScreezeException: The Pillow package is required to use this function.

エラーにヒントがあります。
screenshot()関数が機能するためには、Pillowが必要とのことです。

Pillowについては、次の記事で解説しています。
記事を参考にして、Pillowをインストールしましょう。

Pillowをインストール後、再度プログラムを実行します。
通常は、これでスクリーンショットが撮れているはずです。

範囲を指定したスクリーンショットの撮影

画面全体のスクリーンショットが撮れても、普通は嬉しくありません。
大抵は、範囲を指定して画面をキャプチャすることに意味があります。

そのためのコードが、以下。

import pyautogui 

screen_shot = pyautogui.screenshot(region=(0, 0, 100, 200)) 
screen_shot.save('test2.png')

上記を実行すると、次のスクリーンショットが撮れます。

見た感じでわかると思いますが、念のため説明しておきます。

region=(0, 0, 100, 200)

このオプションで範囲を指定できます。
この場合、範囲の左上(基準点)を基準に考えます。

(基準点のX座標、基準点のY座標、幅、高さ)の意味になります。
では、値を変えて実行してみましょう。

region=(50, 50, 50, 100)

このようなスクリーンショットになります。
よくわからないという方は、実際に手を動かしてみてください。
このようなことを理解する場合は、実際に手を動かした方が早いです。

以上、PyAutoGUIによるスクリーンショットの撮影について説明しました。

タイトルとURLをコピーしました