1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

HEIC画像を一括でJPEG/PNG/TIFFへ変換するPythonスクリプト

Last updated at Posted at 2025-05-21

使い方

  1. 変換したい .heic ファイルが格納されているディレクトリを用意する。
  2. 下記の必要ライブラリをインストールする。
    pip install pillow pillow-heif
    
  3. コマンドプロンプトでスクリプトを実行する。
    python heicconv.py
    
  4. プロンプトに従い
    • ディレクトリパス
    • 出力拡張子(jpeg / png / tiff
      を入力する。
  5. 変換後ファイルは <入力ディレクトリ>/<拡張子名>/ 配下へ保存される。

開発環境

項目
OS Windows 11
言語 Python 3.12.3
シェル コマンドプロンプト

スクリプト全文

heicconv.py
import os
from PIL import Image
import pillow_heif

def convert_heic_images():
    # 入力:対象のディレクトリ
    directory = input("対象のディレクトリパスを入力してください: ").strip()
    if not os.path.isdir(directory):
        print("指定されたパスはディレクトリではありません。処理を終了します。")
        return

    # 入力:変換したい拡張子
    valid_extensions = {"jpeg": "JPEG", "jpg": "JPEG", "png": "PNG", "tiff": "TIFF", "tif": "TIFF"}
    ext_input = input("どの拡張子に変換しますか?(jpeg/png/tiff): ").strip().lower()

    if ext_input not in valid_extensions:
        print("対応していない拡張子です。jpeg、png、tiff のいずれかを入力してください。")
        return

    output_format = valid_extensions[ext_input]
    output_ext = ext_input if ext_input != "jpg" else "jpeg"
    output_dir = os.path.join(directory, output_ext)
    os.makedirs(output_dir, exist_ok=True)

    converted_count = 0

    for filename in os.listdir(directory):
        if filename.lower().endswith(".heic"):
            heic_path = os.path.join(directory, filename)
            base_name = os.path.splitext(filename)[0]
            output_filename = f"{base_name}.{output_ext}"
            output_path = os.path.join(output_dir, output_filename)

            try:
                heif_file = pillow_heif.read_heif(heic_path)
                image = Image.frombytes(
                    heif_file.mode,
                    heif_file.size,
                    heif_file.data,
                    "raw",
                    heif_file.mode
                )
                image.save(output_path, format=output_format)
                print(f"✅ 変換完了: {filename}{output_filename}")
                converted_count += 1
            except Exception as e:
                print(f"❌ 変換失敗: {filename}(エラー: {e}")

    if converted_count == 0:
        print("HEICファイルが見つかりませんでした。")
    else:
        print(f"\n🎉 合計 {converted_count} 件のファイルを {output_format} に変換しました。出力先: {output_dir}")

if __name__ == "__main__":
    convert_heic_images()

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?