使い方
- 変換したい
.heic
ファイルが格納されているディレクトリを用意する。 - 下記の必要ライブラリをインストールする。
pip install pillow pillow-heif
- コマンドプロンプトでスクリプトを実行する。
python heicconv.py
- プロンプトに従い
- ディレクトリパス
- 出力拡張子(
jpeg
/png
/tiff
)
を入力する。
- 変換後ファイルは
<入力ディレクトリ>/<拡張子名>/
配下へ保存される。
開発環境
項目 | 値 |
---|---|
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()