非IT企業に勤める中年サラリーマンのIT日記

非IT企業でしかもITとは全く関係ない部署にいる中年エンジニア。唯一の趣味がプログラミングという”自称”プログラマー。

【Python】5秒で画面キャプチャ!特定部分を切り取って保存するテクニック

   

画面のスクリーンショットを撮って、必要な部分だけを切り抜く作業は意外と手間がかかります。特に、同じような作業を何度も繰り返す場合はその時間もばかになりません。なので、その一連の作業をPythonで自動化させましょう。

この記事では、Pythonを使って「5秒後に画面全体のスクリーンショットを撮り、さらにその画像の一部を自動で切り取って保存する」ソースコードを紹介します。

import time
from mss import mss
from PIL import Image

def take_screenshot_and_crop(delay_seconds=5, output_filename="cropped_screenshot.png"):
    """
    5秒後に画面全体のスクリーンショットを撮り、その一部を切り取ってPNG形式で保存します。

    Args:
        delay_seconds (int): スクリーンショットを撮るまでの待機時間(秒)。デフォルトは5秒。
        output_filename (str): 切り取った画像を保存するファイル名。デフォルトは"cropped_screenshot.png"。
    """
    print(f"{delay_seconds}秒後にスクリーンショットを撮ります。")
    time.sleep(delay_seconds)

    with mss() as sct:
        # 画面全体のスクリーンショットを撮る
        monitor = sct.monitors[0]  # メインモニターを選択。必要に応じて変更してください。
        sct_img = sct.grab(monitor)
        
        # PillowのImageオブジェクトに変換
        img = Image.frombytes("RGB", sct_img.size, sct_img.rgb)

        # 切り取り範囲を指定 (例: 左上から幅500px、高さ300pxの領域)
        # 以下の値を調整して、好きな範囲を切り取ってください
        left = 100
        top = 100
        right = 600  # left + width
        bottom = 400 # top + height

        cropped_img = img.crop((left, top, right, bottom))

        # PNG形式で保存
        cropped_img.save(output_filename, "PNG")
        print(f"スクリーンショットを切り取り、'{output_filename}' として保存しました。")

if __name__ == "__main__":
    take_screenshot_and_crop()
 

 

スポンサーリンク

 - Python