iPhoneで撮影した写真をPythonでpngに変換


press
iPhoneで撮影した写真をPythonでpngに変換

iPhoneで撮影した写真をPythonでpngに変換

iPhoneで撮影した写真はHEICという拡張子で保存されます。この画像を利用したり編集したりするにはpngなどの形式に変換が必要なので画像が大量にある場合は1枚1枚変換するのは大変ですが、Pythonを使えば複数画像をまとめてpngに変換できます。

※pyheifはWindowsでは非対応です。

コードはGitHubリポジトリにあげています。

import glob

import pyheif
from PIL import Image
from tqdm import tqdm

ORIG_DIR = "original/"
CONV_DIR = "convert/"


def conv(image_path):
    heif_file = pyheif.read(image_path)
    data = Image.frombytes(
        heif_file.mode,
        heif_file.size,
        heif_file.data,
        "raw",
        heif_file.mode,
        heif_file.stride,
    )

    dir_name = image_path.replace("HEIC", "png").replace(ORIG_DIR, CONV_DIR)
    data.save(dir_name, "PNG")


lst = glob.glob(ORIG_DIR + "*.HEIC")
for i, l in enumerate(tqdm(lst)):
    conv(l)

解説

import glob
import pyheif
from PIL import Image
from tqdm import tqdm
モジュール、ライブラリのインポート

ORIG_DIR = "original/"
CONV_DIR = "convert/"

元画像のフォルダ、変換後のフォルダを指定

def conv(image_path):
heif_file = pyheif.read(image_path)
data = Image.frombytes(
heif_file.mode,
heif_file.size,
heif_file.data,
"raw",
heif_file.mode,
heif_file.stride,
)

変換のコード
https://pypi.org/project/pyheif/

dir_name = image_path.replace("HEIC", "png").replace(ORIG_DIR, CONV_DIR)
data.save(dir_name, "PNG")
拡張子をHEICからpngに置換
パスを保存先のディレクトリに置換
画像を保存

lst = glob.glob(ORIG_DIR + "*.HEIC")
元画像フォルダの拡張子がHEICのファイルを全て選択

for i, l in enumerate(tqdm(lst)):
conv(l)
取得した全ファイルを一枚ずつ変換
tqdmで進捗を可視化


株式会社ファントムへのお問い合わせ

群馬県でPythonを使ったAIやソフトウェアを開発している株式会社ファントムが運営しています。




    Related Articles

    Django

    psycopg2がインストールできずエラーになる

    psycopg2がインストールできずエラーになる DjangoでPostgreSQLに接続するために、以下のコマンドでpsycopg2をインストールしたところ、以下のエラーが発生した時の対処法です。 エラー 実際には…の […]

    Posted on by press
    Django

    ダウンロードするファイルの文字コードを動的に変更

    ダウンロードするファイルの文字コードを動的に変更 ウェブアプリケーションの中でCSVやテキストファイルをダウンロードさせた時に文字化けが発生する事があります。使用する文字コードが決まっていれば予め固定してしまう事で文字化 […]

    Posted on by press

    最新情報をお届けします!

    メーリングリストに登録するとファントムの最新情報をお届けします

    お客様のメールアドレスを共有することはありません