DENXブログ

同志社大学 電気情報研究会(DENX)の活動や日常風景などを紹介します。

スクリーンショット撮って自動で保存するアプリを作った話

こんにちは、電気情報研究会の2回生aisです。

学問や生活の役に立つ特定のサイトをいつでも見れるようにするためにスクリーンショットをワンクリックで撮影して自動でフォルダに保存するアプリをPythonで作りました。

今回はその話を書かせていただきます。

既存のフリーアプリやWindowsスクリーンショットシステムでは

・キーボードを使いWin+Alt+PrintScreen等を打ち込む必要がありマウスのみでできるものが多分ない

・別サイトのスクリーンショットも保存してしまう

・ウィンドウをアクティブ化させる必要がある

・不必要なサイトまでもスクリーンショットして保存してしまう

・編集して保存する必要がある

等々の問題点があります。

これより、ウィンドウをアクティブ化させる必要がなくキーボードを使わずにワンクリックのみで好きなウィンドウのスクリーンショットを撮影し保存できるアプリの製作を目指しました。

環境は

・Python3.7.2

・pywin32 228

・Pillow7.2.0

・Tkinter8.6

・datetime

・pyinstaller4.0

・Spyder3.3.6

です。

制作時間はおおよそ3,4時間

動作過程としては

1.Tkinterで作ったGUI上にある同じくTkinterで作ったボタン(以下2~4の動作が行われる)を押す

2.pywin32のwin32guiで指定したウィンドウ(スクリーンショットをしたいウィンドウ)を取得させる

3.PillowのImageGrabで取得したウィンドウをスクリーンショット

4.スクリーンショットはdatetimeを使用し、「現在日時.png」として指定した場所に保存

という流れになっています。

完成したものをテストすると、

・マルチモニターの環境ではサブモニターにあるウィンドウのスクリーンショットを撮っても、画像が黒くなる

・保存までに若干ラグがある

・ウィンドウが一番上にないと正確に撮影されない(仕様?)

という問題が有りましたが、普段遣いではそこまで問題もなく、自分用なので今後余力があれば改善したいと思います。

また、現在は内部でウィンドウ名を指定しているため、外部からウィンドウ名を指定できるようにしたり、アイコン等のデザインの変更、保存場所の設定等をできるように改善していきたいです。

最後になりましたが、自分のためのアプリ開発QOL(quality of life)もあがり、とても楽しいので皆さんもチャレンジしてみてください!