見出し画像

iPhoneで撮ったHEIC画像を一括でJPGファイルへ変換する方法

お疲れ様です。藤原です。今回はiOS11以降カメラアプリのデフォルト保存形式であるHEICファイルを、後からまとめて一括でJPGファイルへ簡単に変換する方法について書いてみます。なるべく簡単に書こうと思いますのでしばしお付き合いください。

※本記事はMacを利用の方(macOS)限定です。Windowsはここ10年以上使ってないので分かりません。予めご了承ください。


想定される利用シーン

iPhoneで撮影した画像を後で使用する際に、投入しようとしている先のシステムがHEICファイルに対応しておらず、事前にJPG変換する必要があるが、いちいちmacのプレビューアプリを開いて保存し直す手作業が面倒なので、一発のコマンドで一気にJPG変換できたら良いのになぁというシーンでの利用を想定しています。

例えば、メルカリへの出品作業をmacでやりたいが写真はiPhoneで撮ったHEIC写真しかないとか、撮影した領収書を社内の経費精算システムに投入したいがJPG画像しか受け付けてくれないとか、そういう場面です。

普段使いのiPhoneでJPGファイルを保存するよう設定変更している人には関係ありませんが、容量節約のためにHEICのまま使っている人は多いのではと思いましたので、そんな方にはこの記事が参考になれば幸いです。

Homebrewの導入

JPG変換に使うコマンドラインツールをインストールする前に、それをインストールするためのコマンドラインツール(Homebrew)をインストールする必要があります。ややこしい。既に導入済みの方はこの章は飛ばして、次のステップに進んでOKです。

Homebrewを導入するには、macでターミナルを開いて次のコマンドを実行してください。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

インストールが完了してもデフォルトでパスが設定されていない可能性があるので、その場合はHomebrewが導入された先に対してパスを設定します。僕の場合、'/opt/homebrew/bin' にbrewがインストールされたので次のようになります。

まずターミナルを開いた後、設定ファイルを開きます。

touch ~/.zshrc
open -e ~/.zshrc

開いたファイルに次の行を追加します。

export PATH="/opt/homebrew/bin:$PATH"

追加できたらファイルを保存して閉じ、ターミナルで次のコマンドを実行して変更を適用してください。

source ~/.zshrc

僕のMacの場合は上記のパス設定になっていますが、違う方は適宜パスを読み替えてください。

ImageMagickの導入

ImageMagickは非常に強力なコマンドラインツールで、画像の変換、作成、編集などができます。HEICファイルをJPGに変換するには、次のようなコマンドを使用します。

// 使用例
magick convert input.heic output.jpg

このImageMagickをHomebrewを使ってインストールする方法は次の通りです。ターミナルを開いて以下のコマンドを実行してください。

brew install imagemagick

これで上記magickコマンドが使用できるようになったと思います。

シェルスクリプト化して便利に

上の使用例で紹介した方法だと1ファイルしか変換できません。これをシェルスクリプト化してもっと便利にすると良いです。

僕はカレントディレクトリにある全てのHEICファイルを同名のJPGファイル(拡張子のみ異なる)に変換して同じ場所に格納するシェルスクリプトを使っています。作成手順を以下に記載します。

パスが通っている場所、例えば今回の例では '/opt/homebrew/bin' にシェルスクリプトを作成します。nanoを使う例を以下に示します。(パスが通っている場所であればどこでも良いです。その場合、cdコマンドのファイルパスを適宜読み替えてください)

cd /opt/homebrew/bin
nano convert_heic_to_jpg.sh

convert_heic_to_jpg.shはファイル名ですので好きに付けてもらって大丈夫です。テキストエディタが開いたら次のスクリプトをコピペしてください。

#!/bin/bash

# カレントディレクトリのすべてのHEICファイルを検索してループ処理
find . -iname '*.heic' | while read file; do
    # ファイル名の取得
    filename_with_extension=$(basename "$file")

    # 拡張子以外のファイル名の取得
    filename="${filename_with_extension%.[Hh][Ee][Ii][Cc]}"

    # HEICからJPGへの変換
    magick convert "$file" "${filename}.jpg"
done

echo "Conversion complete."

コードを入力し終わったら、ファイルを保存してエディタを閉じます。nanoの場合は、Ctrl + Xを押してからYを押し、Enterを押します。

保存できたら、ターミナルで以下のコマンドを実行して、シェルスクリプトに実行権限を与えます。

chmod +x convert_heic_to_jpg.sh

これで完了です。あとは変換したいHEICファイルがある場所でターミナルを開いて convert_heic_to_jpg.sh を実行するだけです。僕の環境だと、convert_まで書いてtabキーを押せば自動補完されて上記コマンドが実行できます。

おわりに

僕の環境のケースで今回のnoteは記載しましたが、おそらく皆さんも同じなのではないかと思います。皆さんの参考になれば幸いです。

それでは、快適なJPG変換ライフをお楽しみください。

サポート代は大好きなスタートアップへの取材費に充てさせていただきます