Automator で .HEIC をオートに変換

AirDropiPhone から Mac へ撮った写真を移すのは一瞬でできるのに、Mac に移してから .HEIC フォーマットの画像を他サービスに貼り付けたりする時の面倒さたるや...

今まで Preview.app で開いて保存し直したりしていたけど、領収書の写真を何枚も変換するの嫌すぎて Automator でやってみたら一瞬で出来た、なぜ今までやらなかったのか...

コンテキストメニューから変換

おもむろに Automator を起動して クイックアクション を作る。

f:id:pokutuna:20200801143248p:plain
クイックアクション

イメージのタイプを変更 を追加する、以下のように聞かれるが元データ要らないので追加しない。

渡されたイメージファイルのイメージタイプを変更します。“Finder項目をコピー”アクションを追加して、オリジナルを変更しないでコピーを変更するようにしますか?

変換後のタイプを JPEG にして保存して完成。JPG に変換 とかわかりやすい名前をつける。

f:id:pokutuna:20200801154515p:plain
これだけ

保存時の名前でコンテキストメニューに出てくるようになる。画像を右クリックで変換する。

f:id:pokutuna:20200801155424p:plain
コンテキストメニューにのサービス以下から選べる

保存したワークルフローファイルは ~/Library/Services 以下に保存されるようなので、編集したいときはそこから開く。

フォルダアクションで変換

いや右クリックもめんどいんだが、と思ったのでフォルダアクションで変換する。Automator のフォルダアクションは、特定のディレクトリにファイルが追加されたことをトリガとして処理を実行できる。

~/Downloads をターゲットに、シェルスクリプトを実行 アクションを追加して bash1 で引数として入力を貰う。実行するスクリプトは以下のような感じ。ファイル名の末尾が .HEIC なら sips コマンドで jpg へ変換する。sips コマンドは macOS 付属の画像処理コマンドなのでシュッと使えて便利。

for f in "$@"; do
  if [ "${f##*.}" = 'HEIC' ]; then
    sips -s format jpeg $f --out "${f%.*}.jpg"
  fi
done

f:id:pokutuna:20200801170939p:plain
フォルダアクションでシェルスクリプトを実行

スマホから AirDrop で受け取ったファイルはダウンロードディレクトリに保存される。

Image from Gyazo

作ったフォルダアクションは /Users/pokutuna/Library/Workflows/Applications/Folder\ Actions に保存されている。

いやーなんでもっと早くやらなかったのか......


  1. 例のシェルスクリプトbash の文字列展開を利用して拡張子取り出したりしているため Shell Parameter Expansion (Bash Reference Manual)