Python

[Python] 파이썬으로 HEIC to JPG

메바동 2025. 2. 20. 23:59
728x90

요즘 아이폰으로 찍은 사진을 에어드롭으로 맥북으로 옮겨 블로그에 일기를 작성한다.

이때, 아이폰에서 에어드롭으로 옮겨온 사진 파일의 확장자는 .heic인데, 이 파일이 티스토리에 바로 업로드가 되지 않는다.

그래서 웹에서 heic를 jpg로 변환해 주는 사이트를 이용해서 변환하거나, 이미지 편집기로 확장자를 변경해 줘야 한다.

지금까지는 GIMP를 이용해 사진을 열고 내보내기로 jpg로 변환을 하는 과정을 거쳤다.

근데 GIMP에서 jpg로 내보내기 단축키 같은 게 존재하지 않고, 단순히 확장자 변경만을 위해 이미지 편집툴을 이용하는 게 귀찮아졌다.

물론 맥에 기본으로 설치되어 있는 미리 보기를 이용해서 변환할 수도 있지만, 이 과정이 다 귀찮았다.

그래서 파이썬을 이용하여 HEIC 파일을 JPG로 변환하는 스크립트를 작성하기로 하였다.

 

pipenv install Pillow pillow-heif

# 또는

pip install Pillow pillow-heif

 

우선 Python으로 이미지를 다룰 수 있는 라이브러리인 Pillow와 heic 파일을 처리할 수 있게 해주는 pillow-heif를 설치한다.

 

from PIL import Image
from pillow_heif import register_heif_opener

register_heif_opener()


def heic_to_jpg(heic_path):
    try:
        with Image.open(heic_path) as img:
            img.save(img.filename.split('/')[-1].split('.')[0] + '.jpg', 'JPEG')
    except Exception as e:
        print(f'Error converting HEIC to JPG: {e}')

 

위와 같이 함수를 만들어 주면 heic_path로 전달받은 heic 파일을 jpg로 변환하여 저장할 수 있다.

 

하지만 내가 원한 건 그날 일기에 사용할 heic 파일을 한 폴더에 모아놓고 해당 파일들을 전부 jpg로 변환하는 기능을 원한다.

 

import os

from PIL import Image
from pillow_heif import register_heif_opener

register_heif_opener()


def heic_to_jpg(heic_path, output_dir):
    try:
        with Image.open(heic_path) as img:
            converted_filename = os.path.splitext(os.path.basename(heic_path))[0] + ".JPG"
            output_path = os.path.join(output_dir, converted_filename)
            img.save(output_path, 'JPEG')
    except Exception as e:
        print(f'Error converting HEIC to JPG: {e}')


if __name__ == '__main__':
    data_dir = '../data'
    output_dir = '../converted_data'

    if not os.path.exists(output_dir):
        os.makedirs(output_dir)

    for filename in os.listdir(data_dir):
        if filename.lower().endswith('.heic'):
            heic_path = os.path.join(data_dir, filename)
            heic_to_jpg(heic_path, output_dir)

 

위와 같이 data 폴더에 변환할 heic 파일들을 모두 넣어주고, converted_data에 jpg 파일을 저장하도록 하면 원하는 대로 동작을 한다.

 

 

 

한 가지 아이폰의 재밌는 점을 말하자면, 그냥 찍은 사진은 대문자로 .HEIC 파일인데, 사진에서 편집을 한 사진은 소문자로 .heic 파일이 된다.

728x90