
Mac で外部ディスプレイ上の指定領域のスクリーンショットをコマンドで取得する
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、CX 事業本部製造ビジネステクノロジー部の若槻です。
最近、Mac で起動しているアプリケーション上の決まった範囲を連続して何度もキャプチャしたいケースがありました。
そこで今回は、Mac で外部ディスプレイ上の指定領域をコマンドでキャプチャする方法を確認してみました。
環境
| バージョン | |
|---|---|
| 端末 | MacBook Pro 13-inch, M1, 2020 |
| OS | Sonoma 14.2.1 |
次のような Mac 本体ディスプレイの上方に外部ディスプレイが配置されている状況を想定します。

方法
使用するコマンドは screencapture です。-R<x,y,w,h> オプションでエリアを指定します。-c は取得画像をクリップボードにコピーするオプションです。
screencapture -Rx,y,width,height -c
x と y は Mac 本体ディスプレイの左上隅からのスクリーン座標です。width はキャプチャ範囲の幅、height はキャプチャ範囲の高さです。
なので、-R で次のように指定した場合、
screencapture -R-500,-1300,-1200,1000 -c
外部ディスプレイのうち、Mac 本体ディスプレイの左上隅から 500px 左(-500px 右)、1300px 上(-1300px 下)の位置から、幅が左に 1200px(右に -1200px)、高さ 1000px の範囲をキャプチャします。

また、-R で次のように指定した場合、
screencapture -R500,-1000,800,700 -c
外部ディスプレイのうち、Mac 本体ディスプレイの左上隅左上から 500px 右、1000px 上(-1000px 下)の位置から、幅が右に 800px、高さ 700px の範囲をキャプチャします。

D オプションで範囲指定はできなかった
-D オプションでディスプレイ ID を指定すると、そのディスプレイのスクリーンショットを取得できます。
screencapture -D 2 -c
当初、この -D と -R を組み合わせて、外部ディスプレイ上の指定領域のスクリーンショットを取得することができるかと思いましたが、残念ながら -D と -R を組み合わせて使うことはできませんでした。
下記のように -R オプションを指定しても、Mac 本体ディスプレイ上の指定領域のスクリーンショットが取得される挙動となってしまいます。
screencapture -D 2 -R0,0,500,250 -c
おわりに
Mac で外部ディスプレイ上の指定領域をコマンドでキャプチャする方法を確認してみました。
本体ディスプレイと外部ディスプレイの位置関係に応じて、キャプチャ範囲の座標開始位置や幅/高さを正数や負数を組み合わせて指定することで、外部ディスプレイ上の指定領域のキャプチャを実現できました。
以上







