Mac で外部ディスプレイ上の指定領域のスクリーンショットをコマンドで取得する

2024.03.12

こんにちは、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

xy は 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 で外部ディスプレイ上の指定領域をコマンドでキャプチャする方法を確認してみました。

本体ディスプレイと外部ディスプレイの位置関係に応じて、キャプチャ範囲の座標開始位置や幅/高さを正数や負数を組み合わせて指定することで、外部ディスプレイ上の指定領域のキャプチャを実現できました。

以上