안녕하세요. exif 때문에 이미지가 이상하게 돌아가는 경우가 있습니다. 이 때 (회전 정보가 있는) exif 정보를 제거하는 방법을 알아보겠습니다.
먼저, 실습에 사용될 이미지는 여기에서 구할 수 있습니다. 제 pycharm에서 down-mirrored.jpg를 열어보겠습니다. down-mirrored.jpg입니다.
아래쪽으로 뒤집어진 모양을 하고 있습니다. 원래 모양은 DOWN이 위로 오고, 다음 줄에 MIRRORED가 돠야 합니다. 회전 정보가 어딘가에 들어가 있음을 알 수 있어요.
우리는 간단하게 이미지를 열고, exif_transpose 함수를 사용해 봅시다.
이 함수의 설명을 보면, EXIF orientation tag가 있다면, 그 정보를 바탕으로 변환된 새로운 사진을 돌려주고, 원래 정보는 제거해 버립니다. 이 함수의 내부를 잠깐 보겠습니다.
보시면, image.getexif() 함수에서 exif 정보를 얻어옵니다. 296, 282, 531, 274, 283과 같은 이상한 수들이 있어요. 이 수들에 대한 정보는 여기에서 얻을 수 있습니다. 이 중 274는 행과 열로 표시되는 이미지 방향이라는 것을 알 수 있습니다.
이를 바탕으로 transpose 함수를 호출해서, 새로운 이미지를 만듭니다.
결과는 DOWN MIRRORED로 제대로 보임을 알 수 있습니다.
이번에는 다른 이미지입니다. 좌우로 뒤집힌 모양을 하고 있어요.
exif 정보에는 어떤 것이 담겨 있을까요? orientation이 2임을 주목해 주세요. FLIP_LEFT_RIGHT인데요. 좌우가 바뀐 모양임을 의미합니다. exif_transpose 함수로 exif에 들어있는 orientation 정보를 바탕으로 회전을 시킵니다. 그리고, exif 정보를 제거해 보겠습니다.
up-mirrored.jpg를 연 다음에, exif_transpose를 호출한 다음에 img.save를 합니다.
그러면 좌우로 뒤집힌 사진이 원래대로 돌아옴을 볼 수 있습니다.
'중급 레퍼런스 > 이미지' 카테고리의 다른 글
파이썬 pillow crop 함수를 알아봅시다. (0) | 2023.05.20 |
---|---|
pillow resize 함수를 알아봅시다. (0) | 2023.05.18 |
pillow thumbnail 함수에 대해 알아봅시다. (0) | 2023.05.16 |
pillow transpose 함수와 mode에 대해 알아봅시다. (0) | 2023.05.04 |
최근댓글