【Mac】画像の縮小をショートカットで

このブログの記事を書くとき、よくスクリーンショットを使う。なんらかの操作を、画像で説明したいとき、などだ。
 macOS 14 Mojave になってから、スクリーンショットの加工もずいぶんやりやすくなった。
 右下に現れるサムネイルをクリックすれば、ちょっとした加工を行える。
 スクショを撮影 > そのまま加工、という流れで作業できる。
 これはいいのだが、しかし、画像に文字を書くことはできても、画像のリサイズが出来ないというのはなんなんだろう。

リサイズするには、けっきょくプレビューなどのアプリで画像を開くしかない。面倒くさい。せめて、プレビューのリサイズにキーボード・ショートカットでもあればいいのに、と思う。
 システム環境設定 > キーボード > 「ショートカット」タブの「アプリケーション」で、キーボード・ショートカットを設定するのは可能だ。

新規ショートカットを設定するには、[ + ] ボタンを押す。
 アプリケーションを選択し、メニュータイトルを正確に記述する。今回は「サイズを調整…」だ。あとはキーボード・ショートカットを決めて、実際に押下して設定する。

クイックアクションでリサイズする

しかし、プレビューでキーボード・ショートカットを設定したところで、やっぱりまだ面倒くさいのである。わたしの場合は、だいたい画像の横幅を 800 ピクセルか、600 ピクセルにすると決めている。
 その 600、800 と数字を打ちこむのがもう面倒。
 このなまけの宿業は、クイックアクションを作ることでしか解放されないであろうと思い、しょうがないから作ることにした。

おなじみの Automator を起動して、クイックアクションで新規作成する。

「ワークフローが受け取る項目」をイメージファイルにし、「Finder項目をコピー」>「イメージをサイズ調整」とつなげる。

わたしの場合は、リサイズした画像が 800 ピクセルなのか 600 ピクセルなのかファイル名に記述したいので、シェルスクリプトを書くことにした。

for f in "$@"
do
	ext=`echo .${f##*.}`
	FilePath=`echo "$f" | sed -e "s/$ext$//"`
	sips --resampleWidth 800 "$f" --out "$FilePath"_800px"$ext"
done

同じものを 600px でも作って保存すれば完成だ。

sips コマンド

sips コマンドは macOS 固有のコマンドのひとつだ。簡単な画像処理をしてくれる。
 おもなオプションは以下の通り。

-Z ピクセル数
# 縦横比を保ったままリサイズ。縦横、長いほうを指定したピクセル数にあわせる。
sips -Z 600 image.png

-z 縦ピクセル数 横ピクセル数
# 縦横比を無視してリサイズ。
sips -z 480 600 image.png

--out PATH/FileName
# ファイル名を指定して書き出す。これを指定しないと元ファイルに上書きされる。
sips -Z 600 image.png --out ~/Desktop/resize-image.png

--resampleWidth ピクセル数
# 横幅をピクセル数にリサイズする。縦横比は保たれる。
sips --resampleWidth 600 image.png --out resize-image.png

--resampleHeight ピクセル数
# 高さをピクセル数にリサイズ、縦横比は保たれる。
sips --resampleHeight 480 image.png --out resize-image.png

-g
# 画像の情報を表示する。
sips -g pixelWidth -g pixelHeight image.png #画像サイズ
sips -g format image.png #画像のフォーマット
sips -g all image.png #すべてのプロパティ

-f horizontal(or vertical)
# horizontal で水平に反転。vertical で垂直に反転させる。
sips -f horizontal image.png

-r 角度
# 角度分、画像を回転させる。
sips -r -30 image.png

-c 縦ピクセル数 横ピクセル数
# 画像のクロップ。中心からピクセル数分、画像を切り出す。
sips -c 150 120 image.png

-s format フォーマット
# 画像のフォーマットを変更する。フォーマットは
# jpeg、png、tiff、gif、jp2、pict、bmp、qtif、psd、sgi、tga とのこと。
sips -s format tiff image.png --out image.tiff

-p 縦の総ピクセル数 横の総ピクセル数
# 画像に余白をつける。png の場合は透明の余白になる。600x480 の画像の縦横に余白 10px をつけるとすると、
sips -p 500 620 image.jpg --out padding.jpg

sips は、なかなか綺麗にリサンプルしてくれる。おそらくプレビューでやるのと変わらない。

ショートカットを割り当てる

Automator で作成したクイックアクションは、サービスメニューや、右クリックのクイクアクションから実行できる。

しかしまだ面倒くさい。右クリックなんかしたくない。
 サービスメニューには、ショートカット・キーを割り当てられる。先ほどと同じ、システム環境設定 > キーボード > 「ショートカット」タブ > 「サービス」で設定する。

これ以上は出来ることはないと思われる。試してみると、さすがに楽になった。まぁ良しとする。