2017-10-13 13 views
2

파이썬에서 Image.open을 수행하면 이미지의 너비와 높이가 뒤집어지는 경우가 있습니다. 약간의 조사 (이 post의 explaination을 본다) 후, 이미지가 Exif Orientation metadata과 관련되어 있으면, 그 속성을 존중하는 애플리케이션이 그것을 회전시키는 것으로 보입니다.수동으로 Exif 속성을 설정하고 파이썬에서 이미지의 원래 너비와 높이 유지

그래서 처음 나는 이미지가 속성을 가지고 있으며, 따라서 이성을 상실됩니다 의미, 그것은 6을 반환

identify -verbose image.JPG | grep Orientation 

를 수행하여 내 이미지의 Exif 속성을 테스트합니다. 응답이 이면 이미지에 Exif Orientation metadata이 없으므로 뒤집혀지지 않습니다. 이미지를 뒤집고 싶지 않으므로이 post에서 제안하여 직접 Exif property을 설정해 보았습니다.

그래서 코드를 수동으로 orientation.exif.primary.Orientation[0] = 1으로 설정하려고했습니다. 이처럼 :

from PIL import Image 
import pexif 


orientation = pexif.JpegFile.fromFile('image.JPG') 

print("BEFORE:") 
print(orientation.exif.primary.Orientation[0]) 

orientation.exif.primary.Orientation[0] = 1 

print("AFTER:") 
print(orientation.exif.primary.Orientation[0]) 


img = Image.open('image.JPG') 
print(img.size) 

이 인쇄에게 내가 다시 identify -verbose image.JPG | grep Orientation을 실행할 때, 여전히 6을 보여주고 있기 때문에 후, 실제로 실생활에서 1로 설정하지 않는 1을 수정합니다. 그렇다면 실제로이 문제를 해결하고 이미지의 너비와 높이를 뒤집지 않으려면 어떻게해야합니까?

답변

0

나는 이것을 받아들이지 않습니다. 수퍼 유저의 post이 내 문제를 해결했습니다.

수정 :이 1로 실제 이미지의 방향을 설정

import os 
os.system("exiftool -Orientation=1 -n image.JPG") 

나는 원래의 질문에 한 코드는 내가 만든 이미지 객체가 아닌 실제 이미지 자체의 방향을 변경합니다.