Google Takeout の HEIC を JPG に変換しても撮影日と位置情報を失わない方法
Takeout のエクスポートが HEIC だらけになる理由、日付と GPS を保ったまま JPG に一括変換する方法、変換の前に JSON を書き込むべき理由、そして中身が実は JPEG という妙な HEIC への対処を説明します。Windows、Mac、Linux に対応。
Takeout の写真の半分が .HEIC で終わっている。Windows では空白のアイコン、テレビは無視し、試した変換ソフトは日付も位置情報もない JPG を吐き出した。今や全部が 2 つずつあって、どちらも正しくない。
HEIC 自体は問題ではありません。不注意な変換が問題です。
なぜ Takeout は HEIC だらけなのか
iPhone は 2017 年から既定で HEIC で撮影しています。Google フォトはスマートフォンがアップロードしたものをそのまま保存し、Takeout はそれを変えずに返します。ライブラリが iPhone 由来なら、それ以降の写真はほとんど HEIC です。Android はおおむね JPG ですが、一部の Samsung 機種は HEIF も選べます。
HEIC は同じ画質で JPG の半分ほどの大きさです。Apple が使うのはそのためです。欠点は互換性です。Windows 10 と 11 は表示に Microsoft Store のコーデックが必要です。古いソフト、たいていのテレビ、多くのウェブのアップロード欄、一部の NAS の写真アプリはまったく読めません。Linux のデスクトップには libheif が必要です。
写真の行き先が Apple の「写真」、Immich、PhotoPrism、最近の Android なら HEIC のままにしてください。どれもこの形式を読めますし、変換すれば少し画質が落ちて容量は倍になります。変換するのは、行き先が読めないときか、すべてを 1 つの形式にそろえたいときです。
不注意な変換で失うもの
たいていの変換ソフトは画像をデコードして JPEG に再エンコードします。その多くが、メタデータのまったくない新しい JPEG を書きます。日付、カメラ機種、GPS の入った EXIF 領域が捨てられます。変換後の写真は変換した日を示すようになり、Takeout が起こしたのと同じ問題が、今度は 2 組目のファイルで起きます。
HEIC の中の日付と GPS は、JPEG と同じ種類の EXIF 領域にあります。良い変換ソフトはそれをコピーします。削除する前に結果を確認してください。変換後の JPG を右クリックしてプロパティ(Mac なら「情報を見る」)を開き、「撮影日時」とカメラ機種があるか見ます。
Takeout のメタデータの書き込みは、変換の前にやってください。後ではいけません。.json の日付が HEIC の中に入ってしまえば、メタデータを保つ変換がそれを JPG に運びます。先に変換すると、サイドカーの名前が新しいファイルと一致しなくなり、書き込みを別の方法でやる羽目になります。
手作業で変換する
Mac では、Finder でファイルを選んで右クリック、「クイックアクション」から「イメージを変換」を選びます。JPEG とフルサイズを選びます。ターミナルなら次のとおりです。
for f in *.HEIC; do sips -s format jpeg "$f" --out "${f%.*}.jpg"; done
sips は日付と GPS を含む EXIF を保ちます。
Windows では、HEIF コーデックを入れれば「フォト」アプリが HEIC を 1 枚ずつ JPG で保存できます。まとめてやるなら ImageMagick が無料です。magick mogrify -format jpg *.HEIC で、既定で EXIF を保ちます。
Linux では libheif-examples パッケージの heif-convert が使えます。for f in *.HEIC; do heif-convert "$f" "${f%.*}.jpg"; done で EXIF がコピーされます。
変換ソフトがメタデータを落としてしまった場合は、exiftool で HEIC からコピーし直せます。
exiftool -tagsfromfile %d%f.HEIC -all:all -overwrite_original -ext jpg .
HEIC と JPG の組が同じフォルダーに並んでいる状態で実行します。
中身が JPEG の HEIC
Takeout のエクスポートには、名前は .HEIC なのに中身が JPEG データというファイルがときどきあります。途中のどこかで変換されたのに古い名前のままだった場合に起き、拡張子と中身が食い違うために開くのを拒むビューアーもあります。Mac や Linux では file IMG_1234.HEIC で実際の中身が分かります。JPEG と出たら .jpg にリネームすれば、どこでも開きます。逆に中身が HEIC の JPEG もありますが、まれです。
拡張子を信用する変換ソフトは、これらで失敗するか壊れたファイルを作ります。中身を見る変換ソフトは処理できます。
アプリで変換する
Takeout JSON Metadata Fixer は、日付を直すのと同じ実行の中のオプションとして HEIC を JPG に変換します。Windows、Mac、Linux で動きます。
まず各写真にサイドカーの日付と GPS を書き込み、それから HEIC をデコードして、メタデータを引き継いだ JPG を書きます。拡張子ではなく中身を読むので、.HEIC の名前に隠れた JPEG も、メタデータそのままの普通の JPG になります。横向きの写真は同時に正しい向きに直されます。向きの情報も、悪い変換が落とすものの 1 つだからです。オプションを切っておけば HEIC はそのまま通ります。
JPG は高画質で再エンコードされるので、HEIC の原本より大きくなります。容量が許すなら原本を残してください。最初の 1000 枚は無料です。
目的が変換だけで日付もすでに正しいなら、上の無料ツールで十分です。アプリが役に立つのは、変換と日付の修正と整理を一度に済ませたいときです。
よくある質問
JPG に変換すると画質は落ちますか?
少し落ちます。JPEG は、すでに非可逆圧縮された元を再び非可逆で圧縮したものです。高画質設定なら画面上では見分けがつきません。保存用には HEIC を残し、共有用に JPG を使ってください。
Live Photos は変換できますか?
Live Photos の静止画側は普通の HEIC と同じように変換されます。動画側は別の MP4 で、そのまま残ります。Apple の「写真」は、HEIC と MP4 の組と同じように、同じ名前の JPG と MP4 を組にします。
Windows で HEIC が空白のアイコンになるのはなぜですか?
Microsoft Store の「HEIF 画像拡張機能」が必要で、有料の「HEVC ビデオ拡張機能」も必要なことがあります。入れればエクスプローラーと「フォト」が HEIC を表示します。他の Windows ソフトは、それでも読めないことがあります。
変換後の JPG に GPS は残りますか?
変換ソフトが EXIF をコピーすれば残ります。GPS タグは日付と同じ領域の一部です。変換後に 1 枚確認してください。