Автоматический поворот изображений (по данным из Exif). Linux статьи

Автоматический поворот изображений (по данным из Exif)

5

Поворот изображений jpg автоматически Недавно столкнулся со следующей проблемой. Нужно было автоматически повернуть на 90 градусов некоторые вертикальные фотографии с фотоаппарата. При просмотре их в Nautilus это делается автоматически, так как в данных Exif хранятся данные об ориентации изображения. Но, если, например, нужно опубликовать в интернете сотню фотографий, тогда их нужно предварительно повернуть. Сделать это можно кучей разных способов, но я приведу один, который меня полностью устроил.

Для автоматического вращения (поворота) изображений (фотографий, jpeg) я воспользовался утилитой exiftran. Данная утилита умеет автоматически вращать изображения, используя данные об ориентации в Exif. А так же после действий над файлом, exiftran умеет записывать новые значения в Exif.

Итак, вы должны положить все файлы, которые вы хотите повернуть в какую-нибудь папку. Открыть терминал и перейти в эту папку, используя команду cd:

cd /home/yuriy/myphotos

Теперь нужно запустить утилиту exiftran:

exiftran -aip ./*.JPG

Последний параметр ./*.JPG это путь, а точнее маска файлов, которые нужно обработать. В данном случае мы указали, что хотим обработать все файлы с расширением JPG в текущей директории. Можно указать полный путь, например: /home/pingvinus/myfotos/*.jpeg. Учтите, что регистр символов имеет значение, my.JPG и my.jpg это два разных файла.

Использованные ключи:
-a — использовать данные Exif для определения правильной ориентации.
-i — перезаписывать исходный файл (inplace editing, повернутое изображение пишется в тот же файл).
-p — сохранять исходные временные метки (не изменять их).

Дополнительная информация

Полную информацию по exiftran можно получить выполнив команду:

man exiftran

Если вы не очень любите командную строку (консоль), тогда для пакетной обработки изображений можно использовать утилиту Phatch.

Чтобы не использовать команду cd можно открывать терминал сразу в нужной папке.

Войдите, чтобы ставить лайкимне нравится
Лайков: 0
войдите, чтобы ставить лайки
5

Комментарии

ithilion
25.05.2012, 18:24
Постоянная ссылка на комментарий
Войдите, чтобы ставить лайкимне нравится
Лайков: 0
войдите, чтобы ставить лайки
Только, наверное, man exiftran, а не max?
yuriyАктивный
25.05.2012, 18:42
Постоянная ссылка на комментарийРодительский комментарий
Войдите, чтобы ставить лайкимне нравится
Лайков: 0
войдите, чтобы ставить лайки
Ok :) Исправил.
dima
28.05.2012, 17:28
Постоянная ссылка на комментарий
Войдите, чтобы ставить лайкимне нравится
Лайков: 0
войдите, чтобы ставить лайки
можете почитать про mogrify. многое умеет. не раз меня выручала при массовой конвертации и ресайзе
nessАктивный
08.05.2016, 11:53
Постоянная ссылка на комментарий
Войдите, чтобы ставить лайкимне нравится
Лайков: 0
войдите, чтобы ставить лайки
yuriy, извиняюсь, что не совсем по теме, но такой вопрос. мне нужно обрезать картинки с разными расширениями, но сохранить оригинальные расширения файлов. я для этого передаю файлы convert. например, я пишу в команде "${f%.*}".jpg для имени файла, а как сделать, чтобы вместо jpg сохранялось исходное расширение? просто не очень силен в bash')
сама команда вида: mkdir converted_files; for f in *.jpg *.png; do convert -resize 1000 converted_files/"${f%.*}".jpg; done

upd: нашел решение: ls -1 | xargs -I {} -t convert -resize 1000 {} "converted_{}". с предыдущей командой не особо понял, как заставить работать').
Димма
19.05.2018, 14:29
Постоянная ссылка на комментарий
Войдите, чтобы ставить лайкимне нравится
Лайков: 0
войдите, чтобы ставить лайки
А для Виндуса есть?

Написать комментарий

Ваше имя:
Текст комментария: