I have the following scenario:
Pretty much the same answer than @scabbiaza, but using transpose instead of rotate (for performance purposes).
from PIL import Image, ExifTags
try:
image=Image.open(filepath)
for orientation in ExifTags.TAGS.keys():
if ExifTags.TAGS[orientation]=='Orientation':
break
exif=dict(image._getexif().items())
if exif[orientation] == 3:
image=image.transpose(Image.ROTATE_180)
elif exif[orientation] == 6:
image=image.transpose(Image.ROTATE_270)
elif exif[orientation] == 8:
image=image.transpose(Image.ROTATE_90)
image.save(filepath)
image.close()
except (AttributeError, KeyError, IndexError):
# cases: image don't have getexif
pass