![見出し画像](https://assets.st-note.com/production/uploads/images/74602805/rectangle_large_type_2_86404d0bef730db43083a8d871e2dd39.jpeg?width=800)
Pythonでやってみた9:ダブルクリックで画面キャプチャ(スクショ)
概要
業務管理という理由でとある作業完了後に画面のスクリーンショットを取りファイルを保管するという素敵な作業がでてきました。
ダブルクリックでキャプチャファイルをPCに保存するスクリプトが欲しかったのでサクッと作りました。
1.機能1:Pillowでスクショを取得
まずはPillowライブラリを使用してスクショ機能を追加します。
[IN]
from PIL import ImageGrab
screenshot = ImageGrab.grab() #メインモニターのスクリーンショットを取得
screenshot.save('screenshot.png') #スクリーンショットを保存
[Out]
下記Gif参照
![](https://assets.st-note.com/production/uploads/images/74563234/picture_pc_66f90412c84dba65033a9c7be7e10c4f.gif?width=800)
2.機能2:tkinterでスクショ完了のお知らせ
シンプルな機能だけでよければ本機能は不要です。
スクショ取得後に完了お知らせ機能だけを追加します。ファイル名もGUIとしてtkinterで実装できますが作業量が変わらないので見送りします。
[In]
#GUI機能
base = tk.Tk() #ウィンドウを作成
base.withdraw() #ウィンドウを隠す
msg.showinfo("お知らせ", "スクショを取得しました。")
base.destroy() #ウィンドウを破棄
[Out]
下記Gif参照
![](https://assets.st-note.com/production/uploads/images/74564132/picture_pc_7acbc345a6fd3295a6ec11f06f416e7c.gif?width=800)
3.機能3:Pyinstallerでexe化
ファイル名に本日の日付がつくように修正したpythonファイルを作成。
[In ※note_screenshot.py]
from PIL import ImageGrab
import tkinter as tk
import tkinter.messagebox as msg
import datetime
#スクリーンショット機能
today = datetime.date.today().strftime("%y%m%d") #本日の日付を6桁表示->220319
screenshot = ImageGrab.grab() #メインモニターのスクリーンショットを取得
screenshot.save(f'{today}_screenshot.png') #スクリーンショットを保存
#GUI機能
base = tk.Tk() #ウィンドウを作成
base.withdraw() #ウィンドウを隠す
msg.showinfo("お知らせ", "スクショを取得しました。")
base.destroy() #ウィンドウを破棄
これをPyinstallerでexe化します。※動画は編集していますが実際は完了まで5-10minくらいかかりました。
pyinstaller note_screenshot.py --onefile --noconsole
![](https://assets.st-note.com/production/uploads/images/74565264/picture_pc_c1b8dd7147a5bd1f18b0aae523bb9c27.gif?width=800)
4.完成品
exe化後に作成される"dist"フォルダ内にあるexeファイルを適当な場所に移動させダブルクリックすると同じパスにスクショファイルが作成されます。
デュアルモニタの場合、メインモニタのほうが取得されるためサブモニタにexeファイルを準備しておけばきれいにスクショできます。
![](https://assets.st-note.com/production/uploads/images/74565568/picture_pc_51b5027acb61bb467c58c9ffc4029fc1.gif?width=800)
それにしても普段のPCじゃないほうでやってみると少し遅い気がする。
参考資料
あとがき
理想としては画面のスクショ->指定個所の文字列抽出->抽出した文字列をもとにスクショファイルを指定サーバーに保管 までしたいけど、画像認識やセグメンテーションまで入るからまだまだスキル不足ですね・・・・
この記事が気に入ったらサポートをしてみませんか?