pythonでHEIC形式の画像をjpegに変換する(Windows対応)

概要

iPhoneで撮影したHEIC形式のファイルをjpegに変換する際、webサービスにアップするのはセキュリティ上不安だし、このためだけにフリーソフトを入れるのもなんだか・・・ということで、pythonで変換できるようにしてみた。
よく紹介されているpyheifだと、windowsは非対応だけれど、pillow_heifであればwindowsにも対応しているので便利。

(追記)
以下にGUIをつけて、windiwsで動作するようにしたものをフリーソフトとして公開
www.robotech-note.com

必要パッケージ

python3.10で動作確認
Pillowとpillow_heifをpipでインストール

pip install image pillow_heif pillow

ソースコード

ディレクトリを指定すると、HEIFファイルと同じ場所にjpegファイルが格納される

from PIL import Image
import pillow_heif
import glob
import pathlib

dir = r"ファイルのあるディレクトリを指定"

def heic_jpg(image_path, save_path):
    heif_file = pillow_heif.read_heif(image_path)
    for img in heif_file: 
        image = Image.frombytes(
            img.mode,
            img.size,
            img.data,
            'raw',
            img.mode,
            img.stride,
        )
    image.save(save_path, "JPEG")

image_dir = pathlib.Path(dir)
heic_path = list(image_dir.glob('**/*.HEIC'))

for i in heic_path:
    image_path = str(i)
    save_path =  str(image_dir / i.stem) + '.jpg'
    print(save_path)
    heic_jpg(image_path, save_path)