iPhone で写真を撮ると .heic
(High Efficiency Image File Format (Wikipedia)) になります。macOS 上で見る分には問題ないんですが、共有する時に JPEG にしたいことがあります。
Finder を拡張する
macOS 標準機能の Quick Actions と Automator を使って、Finder 上で簡単に変換できるようにします。
完成した Workflow を GitHub に置いておきます。 GitHub repo(ecpplus/shell-utils)
以下、作成方法の説明です。
準備
コマンドラインで変換方法を確認する
sips コマンド
macOS に標準で入っている sips
コマンドで画像変換が出来ます。 /usr/bin/sips
にあります。様々なオプションがありますが、今回はフォーマット変更のみ使用します。
任意の画像を jpeg フォーマットに変更するには下記のようにします。
sips -s format jpeg $input_path --out $output_path
出力先のファイル名を整える
出力ファイル名は foobar.jpg
のように .jpg
で終わるようにしたいです. シェルスクリプトで簡単にフォーマット出来ます。
INPUT="/foo/bar/IMG_1234.heic"
echo ${INPUT%%.*}.jpg
=> /foo/bar/IMG_1234.jpg
複数画像を一気に変換したい
for
ループを使って複数画像をまとめて処理します。
for f in "$@"
do
sips -s format jpeg "$f" --out "${f%%.*}".jpg
done
Automator workflow を作成
上記の準備を Automator の workflow にまとめます。
Automator.app
を起動します。 (/Applications/
以下にあります)File
(⌘N) からCreate a new workflow
で新規ワークフローを作成します。Quick Action
を選択します。-
下記のように workflow を定義します。
- actions から
Run Shell Script
を選択します。 - Workflow receives current
image files
inFinder.app
となるように選択します。 - 下記の shell script を入力します。
for f in $@ do sips -s format jpeg $f --out ${f%%.*}.jpg done
- actions から
- 名前を付けて保存します。
- これで完成です。Finder から使えます。
使い方
コンテクストメニューから
- 1つもしくは複数のファイルを選択し、右クリックします。
Service > Convert to JPEG
を選択します (保存した時に付けた名前)
プレビューエリアから
プレビューエリアにも自動的にショートカットが表示されます。
色々と CUI でプログラムを作ってしまいがちだけど、GUI の方が便利なものは Automator を使って実装するのは良いアイデアなのかもしれません👌🏻