【Python】プリントスクリーン自動化【何度でも】

いろいろなものを参考にして、ほんの少し自分で使いやすいようにしました。
ほとんどの部分を先人たちの知恵の結晶から拝借しました。
誠に勝手ながら参考サイトとして先人のリンク先を貼らせていただきます。

以下のコードを実行すると、Windowsで「fn」+「print screen」を押すと
スクショした時間の名前が入ったスクショが自動で保存されます。

あとあと調べてみると、Windowsの機能として「win」+「print screen」で同様なことができることに気づきました(笑)
リンクは下に貼っておきます。

しかし、まー、作ったあとなので、公開します。

スクショをする際は、投影者の許可を取ってからスクショを実行するようにしてください。禁止となっている場合はそれに従ってください。
他人に迷惑をかけないように、利用してください。

from PIL import ImageGrab # pillowのインポートが必要
from pynput import keyboard # pynputのインポートが必要
import win32gui # win32guiのインポートが必要
import datetime
import os

def screen_shot():
    # アクティブ画面のスクショをします。
    handle = win32gui.GetForegroundWindow()# アクティブ画面の管理番号取得
    rect = win32gui.GetWindowRect(handle)# アクティブ画面の位置を取得
    screenshot = ImageGrab.grab()# スクリーンショット
    croped_screenshot = screenshot.crop(rect)
    dt_now = datetime.datetime.now()# スクショした時間を取得
    dt_now_1 = str(dt_now)#時間を文字型に変換
    dt_now_2 = dt_now_1.replace(" ","")# 取得した時間に含まれるスペースを削除
    print(dt_now_2)
    croped_screenshot.save(dt_now_2+'_screenshot.jpg')# スクショした画像をスクショ時間と共に保存

def on_press(key):
    try:
        if key == keyboard.Key.print_screen:
            print('アルファベット {0} が入力されました'.format(key.char))
    except AttributeError:
        if key == keyboard.Key.print_screen:
            screen_shot()#アルファベット以外のキーが押された場合の処理

def on_release(key):
    if key == keyboard.Key.esc:# 条件分岐で、ESCが押された場合の処理
        return False# listenerを止める

    # Collect events until released
with keyboard.Listener(
        on_press=on_press,
        on_release=on_release) as listener:
    listener.join()

path = os.getcwd()#スクショが保存されるパスの取得
print(path)#パスの表示
    
listener = keyboard.Listener(on_press=on_press,on_release=on_release)
listener.start()

使用方法

箇条書きで。
・コードを実行
・スクショ画像の保存先が表示される
・スクショした画面をアクティブにする
 →(アクティブ画面がスクショされます)
・「fn」+「print screen」を押す(同時押し)
・スクショした時間が付いた画像が保存される
・何回も繰り返す
・終了した場合は「esc」を押す

以下が参考サイトです



いやー、すげー。

ライブラリってなんでもあるんやなぁ(感動)


この記事が気に入ったらサポートをしてみませんか?