Як автоматично обертати зображення, грунтуючись на даних exif


31

Коли я роблю фотографії за допомогою своєї камери (Olympus E-520), в даних EXIF ​​зберігається орієнтація.

Стандартний переглядач зображень на Ubuntu відображає ці зображення правильно. Windows Viewer, однак, ні.

Чи є спосіб реально обертати ці зображення (якщо потрібно згідно EXIF) у пакеті на Ubuntu? Наприклад, за допомогою інструмента ImageMagick?

Відповіді:


36

exiftranі JHead ( jhead -autorot) може це зробити. exiftranможе це зробити без втрат, не впевнений jhead.


1
exiftran схоже, що це саме те , що мені потрібно!
Пітер Сміт

3
jhead -autorot викликає jpegtran, який може робити ідеально обертання без втрат. Я забув про IJG про речі без втрат. jpegclub.org/losslessapps.html Exiftran також може робити обертання без втрат, і є кращим, ніж jpegtran, оскільки він поважає інформацію exif у файлі зображення. Однак слід зауважити, що іноді (і я не впевнений у всіх деталях) ви не можете без втрат обертатись. Отже, якщо ви реалізуєте скрипт з jhead, щоб визначити необхідний поворот (подібний до мого попереднього, але із заявою випадку для обробки всіх обертів), ви повинні підтримувати повернення до обертання втрат.
opello

1
Я зробив кілька тестів з exiftran -a (автоматичний поворот на основі тегів орієнтації exif), і, здається, він працює дуже добре. Що стосується обертання без втрат, я не міг повернути вихідне зображення, виконавши обернене виконане обертання. Наприклад, exiftool -F 1.jpg -o 2.jpg; exiftool -F 2.jpg -o 3.jpg; md5sum 1.jpg і 3.jpg - це не те саме. При більш детальному огляді (з поєднанням бінарного порівняння Araxis) іноді це була лише інформація exif заголовка, яка відрізнялася, інакше це були значні зміни у файлі. Однак порівняння зображень Araxis Merge не показало жодних незмінних пікселів.
opello

Я мав на увазі не змінені * пікселі (вони були зображеннями, схожими на пікселі). Також - я не впевнений у протоколі stackoverflow / superuser, але я думаю, що dmityugov повинен отримати цей для рекомендування відповідного інструменту.
opello

1
Я виявив, що exiftran може видалити деякі метадані з файлу. Наприклад, зображення, зроблені Samsung Galaxy S2, мають поле часової позначки (можливо, не EXIF), і exiftran видалить його. exiftran -a також змінить зображення, яке не потребує обертання. jhead -autorot не містить обох питань. У OTOH не вистачає можливості збереження файлу mtime (але перемикач -ft як обхідний спосіб).
pfalcon

12

Інструмент перетворення ImageMagick має прапор -орієнтований на авто, який повинен виконати роботу.

#!/bin/bash

JHEAD=jhead
SED=sed
CONVERT=convert

for f in *.jpg
do
        orientation=$($JHEAD -v $f | $SED -nr 's:.*Orientation = ([0-9]+).*:\1:p')

        if [ -z $orientation ]
        then
                orientation=0
        fi

        if [ $orientation -gt 1 ]
        then
                echo Rotating $f...
                mv $f $f.bak
                $CONVERT -auto-orient $f.bak $f
        fi
done

Я зібрав швидкий сценарій, щоб повторити * .jpg у поточному каталозі. Ви можете легко змінити це, щоб взяти шлях ($ 1) або все, що вам потрібно.


1
Чудово! Та, яку я не знайшов. Я використовую це з mogrify, щоб зробити групу зображень. Одне лише запитання, чому він переписує всі зображення, навіть якщо вони не повинні змінюватися? (Хеші різняться)
Пітер Сміт

Я не впевнений, чому, але, здається, зробити повне перекодування, дивлячись як на зображення, так і на бінарне розрізнення.
opello

Ого, це чудово. Дуже дякую. Якщо ніяких інших відповідей на супердобре не додано, я обов'язково прийму цю.
Пітер Сміт

2

Ви можете використовувати XnView для цього. Перегляньте на цих сторінках інформацію про використання XnView для автоматичного обертання в пакетному режимі:

У Windows це можна зробити за допомогою IrfanView . З розділу поширених запитань на веб-сайті IrfanView:

Питання: Як використовувати операції без втрат JPG (Rotation, IPTC, Comment) в пакетному режимі?

A: Запустіть вікно мініатюри, відкрийте папку з JPG, виберіть багато JPG і перегляньте у меню ескізів Файл для операцій без втрат JPG -> Перетворення без втрат з вибраними великими пальцями. Примітка. Параметр автоматичного обертання працює лише в тому випадку, якщо тег орієнтації EXIF ​​належним чином збережений (не вгорі зліва).


1

За допомогою ImageMagick ви також можете використовувати mogrify для обертання файлів і записувати повернене зображення назад до оригінальних імен файлів.

mogrify -auto-orient *.jpg
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.