📷

【WSL2】heic画像を一括でjpgに変換する

2023/09/19に公開

iPhoneの写真設定には「互換性優先」と「高効率」のモードがあります。

「互換性優先」の設定では通常のjpg形式で画像が保存されます。

「高効率」の設定では圧縮率の高い軽量なデータとして保存できますが、拡張子がheicとなるためWindows上の一部ソフトで読み込めないなど互換性が犠牲になる場合があります。

そんなheic画像を一括でjpgに変換した際の備忘録です。

実行環境

  • Windows11
  • WSL2 (Ubuntu20.04)

heif-convertのインストール

libheifを利用します。

https://github.com/strukturag/libheif

aptで落とせます。

sudo apt install libheif-examples

heif-convert コマンドを使い、1枚のheic画像をjpgに変換してみます。

heif-convert hoge.heic hoge.jpg

うまくいきました。

File contains 1 images
Written to hoge.jpg

複数のheic画像を一括でjpgに変換する

対象ディレクトリの全heicファイルをjpg化するshell scriptを書きます。

vi heic2jpg.sh
heic2jpg.sh
#!/bin/bash
for file in `\find /mnt/c/Users/path/to/target_dir -maxdepth 1 -type f`; do
        if [[ $file == *.heic ]]; then
                heif-convert $file $file.jpg
        fi
done

簡単なスクリプトです。

WSL2では /mnt/c/ 配下にWindowsのCドライブがマウントされます。
path/to/target_dir の部分は、Windows側のPictureディレクトリなどheic画像を置いているPATHに書き換えてください。

for文の中では対象ディレクトリ直下にあるファイルのうち、拡張子がheicであるもののみを対象に heif-convert しています。

実行。

./heic2jpg.sh

画像1枚あたり1秒程かかるので大量の画像を処理する場合は気長に待ってあげる必要がありますが、数行のスクリプトだけで楽に変換できました。

libheif作者の方、ありがとう。

Discussion