Pythonでmssモジュールを使用しスクリーンショットを撮影してみます。
mssモジュール・ライブラリは、Python用の外部関数ライブラリ「ctypes」を使用した超高速なクロスプラットフォームのマルチプル(複数)・スクリーンショットモジュールです。単一の画面だけではなく、複数の画面の撮影が可能です。
■Python
今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)
■mssをインストールする
まずは、mssモジュールのインストールを行いますが、今回はpipを経由してインストールを行うので、まずWindowsのコマンドプロンプトを起動します。
pip install mss
起動後、上記のコマンドを入力し、Enterキーを押します。
なお、今回は、pythonランチャーを使用しており、Python Version 3.8.5にインストールを行うために、pipを使う場合にはコマンドでの切り替えを行います。
py -3.8 -m pip install mss
切り替えるために、上記のコマンドを入力し、Enterキーを押します。
Defaulting to user installation because normal site-packages is not writeable Collecting mss Downloading mss-6.1.0-py3-none-any.whl (76 kB) |████████████████████████████████| 76 kB 749 kB/s Installing collected packages: mss Successfully installed mss-6.1.0
Enterキーを押すと、インストールが開始され、上記のように「Successfully installed」と表示されます。これが表示されれば、mssが正常にインストールされたことになります。
■単一のスクリーンショットを撮影する
インストール後、mssモジュールを使用し、スクリーンショットを撮影するスクリプトを書いていきます。
■コード
import mss output_filename = "screenshot1.png" with mss.mss() as mss_instance: mss_instance.shot(output=output_filename)
単一のデスクトップ画面を撮影する場合は、mssモジュールを呼び出して、output_filenameという変数を定義し、その中にスクリーンショットの保存するファイルの名前を格納します。
格納後、with構文を用いて、mss.mss()関数をmss_instanceにし、shot()関数を使用します。shot()関数には、引数,パラメータとして、「output=output_filename」を渡します。これで、撮影されたスクリーンショットが、screenshot1.pngという画像ファイルに保存されます。
■実行・検証
このスクリプトを「screenshots_1.py」という名前でPythonが実行されている作業ディレクトリ(カレントディレクトリ)内に保存し、コマンドプロンプトから実行してみます。
実行してみると、スクリーンショット撮影後に「撮影完了」といった文字列をprint()関数で出力するという処理は行っていないので、何も表示されません。
表示されませんが、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)内を確認すると、「screenshot1.png」という画像ファイルが保存されていることが確認できました。
確認後、画像ファイルを開くと、デスクトップ画面のスクリーンショットが撮影されていることが確認できました。
■複数の画面のスクリーンショットを撮影する
for i in range(1,3): mss().shot(mon=i)
複数の画面のスクリーンショットを撮影する場合は、shot()関数に、引数,パラメータとして、「mon=i」を渡します。これで複数の画面のスクリーンショットを撮影することができます。
コメント