В некоторый момент времени перед автором этих строк встала задача сделать фотографии всех шкафов в серверной, каждый с обеих сторон. Некоторые фотографии делалась повёрнутым на 900 фотоаппаратом. Фотоаппарат при этом умел определять своё положение в пространстве и отмечал этот поворот в метаданных exif, однако если просмотрщик фотографий не умеет при просмотре использовать данных exif - картинка получалась "положенной на бок".
В поисках решения этой проблемы автор наткнулся на утилиту exiftran, которая в Debian/Ubuntu Linux легко устанавливается командой:
sudo apt-get install exiftran
Сама утилита вместе со всей документацией занимает на диске всего около девяносто килобайт, однако умеет она достаточно много: например поворачивать картинки на заданый угол (кратный 900), добавлять комментарий, поворачивать картинку согласно метаданным и многое другое. В данном случае нужна только возможность поворачивать картинку по метаданным. Это делается следующей командой:
exiftran -a -i file.jpg
Здесь ключ "-a" указывает на необходимость автоматически определить направление поворота по метаданным, а ключ "-i" говорит что сохранять изменения нужно прямо в исходом файле, без этого ключа придётс с помощью ключа "-o" указывать ещё и файл для записи результат. Примерно вот так:
exiftran -a -i file.jpg -o newfile.jpg
Однако в случае задачи, озвученной в первом абзаце, файлов было порядка восьмидесяти и выполнять такую команду для каждого достаточно тяжело, потому задача была упрощена с помощью несложного скрипта, набранного прямо в приглашении bash:
for i in *.jpg; do exiftran -a -i ${i}; done
Вобщем-то на этом всё, остаётся только добавить что в случае необходимости выполнения этой операции в некотором каталоге и его подкаталогах разумнее будет воспользоваться следующей командой:
find ~/photos -type f -name *.jpg -exec exiftran -a -i '{}' \;
Где "~/photos" - путь к папке с фотографиями.
Приятной работы!