Pythonでmssモジュールを使用しスクリーンショットを撮影する

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」を渡します。これで複数の画面のスクリーンショットを撮影することができます。

コメント

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