概要
僕は普段ブログ用の画像をiPhoneで撮影して、airdropでMacBook Proに転送しているんですが、得られる画像が IMG_%04d.HEIC
というあまり馴染みのない画像形式 HEIC
になっています。 (→追記1
画像・動画の変換には普段 ffmpeg
を使うんですが、僕が brew
でインストールした ffmpeg
は HEIC
形式に対応しておらず、変換ができず。
諦めてプレビューで開いて ファイル > 書き出す
を使って jpeg
形式に変換していたのですが、流石に今後もずっとやる作業 && 量が多いと本当に時間がもったいないので機械的に処理したいと思い、したのスクリプトを作りました
作ったスクリプト
できることは、「同じディレクトリにある .HEIC
で終わるファイルを全て同名の .jpg
に変換し保存する」ことです。
#!/bin/zsh
for file in `ls *.HEIC`; do
filename=$file:t:r
sips --setProperty format jpeg $file --out ${filename}.jpg
done
convert.zsh
とかにして chmod u+x convert.zsh
で実行権限を与えた後 ./convert.zsh
とかで使います。
:t
とか :r
とかはおそらく zsh
にはあるが bash
sh
にはないと思うので(たぶん)、これは zsh
でしか動きません。
僕が使っているMacBook Pro 16"は元々Catalinaで zsh
が標準だったので、便利に使わせてもらいました。
参考1. 画像ファイルの形式をHEICからJPGにしたい
参考2. Zsh: Get Filename or Extension from Path
追記1
@ktysne さんからのコメントで(ありがとうございます)、「iOSの[設定]>[カメラ]>[フォーマット]から[互換性優先]」を設定するとそもそも JPEG/H264
で保存できることがわかりました。設定調べる前にスクリプト書いてしまった..
4K/60fpsとか1080p/240fpsを使うには高効率にしないといけないようなので注意が必要そう。iPhoneで4K/60fpsで動画撮影もしている人は今回書いてしまったスクリプトが便利かも。笑