ねもぷらす

ふぁいんでぃんぐねもの日記。プログラミングとか育児とか

pyautogui スクリーンショットのアクティブウィンドウに枠線を引く

pyautogui で自動運転を作りこんでいる時、クリック操作前後のスクショを残しておきたかったので書いたヤツ。
python はやりたいことがズバズバ書けて面白い

import pyautogui
from pyautogui import Point
from datetime import datetime
from pyrect import Box
from PIL import ImageDraw

PREFIX = ''
SUFFIX = ''

def save(position:Point=None, box:Box=None, color:tuple=(255,0,0), filename:str=None):
    im = pyautogui.screenshot()
    
    if filename is None:
        filename = "{0}{1:%Y%m%d_%H%M%S_%f}{2}.jpg".format(PREFIX, datetime.now(), SUFFIX)
    
    if position is None:
        (x, y) = pyautogui.position()
    else:
        (x, y) = position
    
    if box is None:
        box = pyautogui.getActiveWindow().box
    xy = (box[0], box[1], box[0]+box[2], box[1]+box[3])
    
    draw = ImageDraw.Draw(im)
    for i in [5, 10]:
        draw.arc(xy=(x-i, y-i ,x+i, y+i), start=0, end=360, fill=color, width=3)
    draw.rectangle(xy, width=5, outline=color)
    
    im.save(filename)
    return filename


if __name__=='__main__':
    import __main__
    __main__.PREFIX = 'screenshot_'
    print(__main__.save())