Обратите внимание, что ниже приведены лучшие ответы.
Если изображение выше, чем его ширина, это означает, что камера была повернута. Некоторые камеры могут обнаружить это и записать эту информацию в метаданные EXIF изображения. Некоторые зрители принимают к сведению эти метаданные и отображают изображение соответствующим образом.
PIL может читать метаданные изображения, но не сохраняет / копирует метаданные при сохранении изображения. Следовательно, ваш интеллектуальный просмотрщик изображений не будет поворачивать изображение, как это было раньше.
Следуя комментарию @Ignacio Vazquez-Abrams, вы можете читать метаданные, используя PIL, и поворачивать при необходимости:
import ExifTags
import Image
img = Image.open(filename)
print(img._getexif().items())
exif=dict((ExifTags.TAGS[k], v) for k, v in img._getexif().items() if k in ExifTags.TAGS)
if not exif['Orientation']:
img=img.rotate(90, expand=True)
img.thumbnail((1000,1000), Image.ANTIALIAS)
img.save(output_fname, "JPEG")
Но учтите, что приведенный выше код может работать не для всех камер.
Самым простым решением может быть использование какой-то другой программы для создания миниатюр.
phatch - это пакетный редактор фотографий, написанный на Python, который может обрабатывать / сохранять метаданные EXIF. Вы можете использовать эту программу для создания миниатюр или посмотреть ее исходный код, чтобы увидеть, как это сделать в Python. Я полагаю, что для обработки метаданных EXIF используется pyexiv2 . pyexiv2 может обрабатывать EXIF лучше, чем модуль ExifTags в PIL.
imagemagick - еще одна возможность для создания миниатюр партий.