내 세상

[Python] Image rotate issue 해결 방법 본문

Technical/Python

[Python] Image rotate issue 해결 방법

sga8 2019. 2. 8. 17:49
728x90
반응형


Exif (Exchangable Image File format)

    • 교환 이미지 파일 형식
    • JPEG 2000, PNG, GIF 파일에서는 지원되지 않음!!!
    • EXIF metadata
      • 날짜와 시간 정보
      • 카메라 설정
      • 저작권 정보에 대한 설명
      • 지리정보 기록
        • GPS 수신기가 장착된 제품으로 사진 촬영을 할 경우 위치 정보를 같이 저장할 수 있음.
    • 자세한 내용은 나무위키 참조 바람 (https://namu.wiki/w/EXIF)

위의 Exif 데이터에 orientation 값을 추출하여 이미지를 회전시키는 것이 포인트입니다.


exif orientation에 대한 이미지 검색결과


위의 이미지는 orientation 값에 따른 이미지의 모양을 보여주고 있습니다.



아래는 이미지를 읽어들이고, ExifTags의 Orientation에 따라 회전시켜주는 샘플 소스코드 입니다. 


from PIL import Image, ExifTags
try:
image = Image.open(image_path)
for orientation in ExifTags.TAGS.keys():
if ExifTags.TAGS[orientation]=='Orientation':
break
exif=dict(image._getexif().items())

if exif[orientation] == 3:
image=image.rotate(180, expand=True)
elif exif[orientation] == 6:
image=image.rotate(270, expand=True)
elif exif[orientation] == 8:
image=image.rotate(90, expand=True)

except (AttributeError, KeyError, IndexError):
# cases: image don't have getexif
pass




이와 관련하여 googling을 진행하실 때, 검색어 키워드는 "python exif rotate" 와 같은 키워드를 사용하시면 도움이 될 것 같습니다.


감사합니다.~~ 

728x90
반응형