固定サイズのMac画面スクショをスクリプトを使って半自動化してみる
2023.04.25 08:00
2023.04.22 22:52

決まったサイズのスクリーンショットを撮っているのですが、毎回スクリーンショットしてクロップしてリサイズして・・と非常にめんどくさかったので、半自動で撮れるようにシェルスクリプトを組んでみました。Mac限定です。
Chromeを開いてサイズを指定し、いらない部分を切り抜いて72dpiのpngで書き出すという流れを半自動でやってくれるようになります。
これによってPhotoshopで赤丸を入れる等の作業以外がほぼいらなくなりました。
1. スクリプトを作成する
#!/bin/sh
##############################################
##
## ウィンドウ1280x800キャプチャ
##
##############################################
# ファイル名指定
DATE=`date +"%Y%m%d%H%M%S"`
filename="/Users/XXXXXX/Documents/Captures/capture_${DATE}.png"
# ウィンドウサイズを指定
osascript \
-e 'tell application "Chrome"' \
-e 'set bounds of front window to {1, 1, 1201, 910}' \
-e 'end tell'
# キャプチャ
/usr/sbin/screencapture -m -W -a -S -C -o -T1 -x $filename
# リサイズ
convert -geometry 50% $filename $filename
# 切り抜き
convert $filename -crop 1200x900+0+109 $filename
# 解像度を72にする
sips -s dpiHeight 72 -s dpiWidth 72 $filename
screenshot.shという名前で作成しました。
最初にファイル名とファイルを保存する場所を指定します。ここでは「書類」フォルダに「Captures」というフォルダを作って、そこに「capture_日付.png」というファイル名を作るようにしています。
次にウィンドウサイズを指定します。Chromeを開いて1201×910サイズにしています。サイズが中途半端なのは、最終的にいらないChromeのツールバー部分をクロップして1200×800の画像にするためです。なので、撮りたいサイズと内容によってこの数値は変わってくるかもしれません。
2. パーミッションを設定
シェルスクリプトを実行させるので、パーミッションを実行権限にします。
cd スクリプトのある場所を指定
chmod 755 screenshot.sh
3. 実行
コマンドラインで実行します。実行する前に、予めスクショしたいページを開いておき、実行するターミナルや他のウィンドウとはかぶらないようにしておいたほうがよさそうです。かぶっていると、他のウィンドウが画像に入り込んでしまいました。
./screenshot.sh
実行すると、どこをスクショするか聞かれるので、クリックします。すると指定した場所にpngが吐き出されています。今回ですと「/Users/XXXXXX/Documents/Captures/」の中です。
めちゃくちゃ楽ですね。
今回は以上です。