python で .HEIC を.png に変換

Posted by: lesser

iPhone で撮影した画像はHigh Efficiency Image File Format (HEIF)で保存されます。
ファイルをMacにもってくると、拡張子が .heic なのがわかります。
このままだと不便なときもあるので Python PNGに変換:)

PIL pyheif が必要です。

$ pip3 list

でインストールされているパッケージを確認。
PILのインストールは、

$ pip3 install Pillow

pyheifのインストールは、

$ brew install libffi libheif
$ pip3 install pyheif

でOK。
変換は以下の通り。

import os, sys, time, math

from PIL import Image
import pyheif

def heif_to_image(path):
    heif_file = pyheif.read(path)
    img = Image.frombytes(heif_file.mode,
                          heif_file.size,
                          heif_file.data,
                          "raw",
                          heif_file.mode,
                          heif_file.stride,)
    return img
    
img = heif_to_image("./test.heic")
img.save("./test.png", "PNG")