여행사진을 종종 블로그에 올리고있다.
그럴때면 한가지 문제가 있는데, 나에게 사진을 제공하는 민멍이의 휴대폰이 아이폰이라는것.
아이폰으로 찍은 사진은 확장자가 heic인 것이 기본 설정이다.
문제는 이 heic는 블로그나 다른 업로드에 사용하지 못하는 경우가 더러 있다는것.
heic가 뭔데?
HEIC(High Efficiency Image Container)는 애플이 개발한 고효율 이미지 포맷이다.
고효율이라는것은 즉, 이미지의 용량에 초점이 맞춰져있다.
기본적으로 화질도 괜찮지만, 같은 화질에서 일반적인 jpeg같은것보다 용량이 훨씬 적다는 특징이 있다.
이렇게만 보면 좋지만... 당연히 공짜는 없는 것.
heic의 호환성이 떨어지기에 jpeg만 취급하는 몇몇 플랫폼에서는 이미지를 사용할 수 없는 이상한 단점도 함께 갖고있다.
heic → jpeg 확장자 변경하기
우선 작업의 목표를 확장자 변경 및 파일 생성 시간으로 이름을 변경하는 것으로 잡았다.
python으로는 아래와 같이 간단한 코드로 이미지의 형태를 변경해줄 수 있다.
pip install pillow pillow-heif
import os
import time
from PIL import Image
from pillow_heif import register_heif_opener
# HEIC 포맷을 지원하도록 설정
register_heif_opener()
# 현재 디렉터리의 모든 HEIC 파일 찾기
for filename in os.listdir():
if filename.lower().endswith(".heic"):
# 파일 생성 시간 가져오기
created_time = os.path.getctime(filename)
formatted_time = time.strftime("%Y%m%d_%H%M%S", time.localtime(created_time))
# 새로운 파일명
new_filename = f"{formatted_time}.jpg"
# HEIC -> JPEG 변환
img = Image.open(filename)
img.convert("RGB").save(new_filename, "JPEG", quality=95)
print(f"{filename} → {new_filename} 변환 완료")
다만... python 인터프리터가 없는 환경에서 작업을 할때도 제법 많은지라,
지금은 python없이 이미지를 변환할 수 있는 다른 방법이 필요하다.
heic → jpeg 확장자 변경하기(python 없이)
ImageMagick라는 모듈을 사용해야 한다고 한다. 먼저, 이걸 설치해보자.
- ImageMagick 다운로드 → 오픈소스라서 무료로 구글에 검색하면 받을 수 있다.
- ImageMagick 설치 시 Install legacy utilities (e.g., convert) 옵션을 체크
- 아래 코드를 .bat 파일로 저장
- .bat 파일 HEIC 파일이 있는 폴더에 놓고 .bat 실행
@echo off
setlocal enabledelayedexpansion
:: 현재 날짜와 시간 가져오기
for /f %%a in ('wmic os get LocalDateTime ^| find "."') do set datetime=%%a
set "basedate=!datetime:~0,8!_!datetime:~8,6!"
set /a count=0
:: .heic 및 .heif 파일 모두 처리
for %%f in (*.heic *.heif) do (
echo.
echo ▶ 변환 중: %%f
set /a count+=1
set "filename=!basedate!_!count!.jpg"
magick "%%f" "!filename!"
if exist "!filename!" (
echo ✔ 저장 완료: !filename!
) else (
echo ❌ 변환 실패: %%f
)
)
echo.
echo 🔚 모든 변환 완료!
pause
결과
현시각으로 이름이 바뀌는것을 볼 수 있다.
'정리된 글 > 코딩' 카테고리의 다른 글
심슨의 역설과 데이터 통계 (0) | 2023.11.10 |
---|---|
[코딩] OOP, 객체 지향 프로그래밍에 대해 (0) | 2023.10.27 |
[키움 API] 총 자산 불러오기 (0) | 2023.09.06 |
백준 알고리즘 문제 풀이 11659 : 구간 합 구하기 4 (0) | 2023.07.26 |
(교육정리) Pandas와 Data 통계 - 1 (0) | 2023.07.25 |