Как мне повернуть много цифровых фотографий на 180 градусов за одну операцию?

20

У меня есть несколько тысяч изображений, снятых с помощью GoPro, которые в обратном порядке.

Я ищу способ, действительно приложение, которое может перевернуть их все, на 180 градусов, за одну операцию.

Я рассмотрел каждый вариант в собственном программном обеспечении GoPro, но не нашел его только для фотографий. Вы можете вращать, делая видео, но я хочу сохранить отдельные изображения.

Я на Windows.

Джонс-305
источник
Связано и очень актуально: вращение «Windows Photo Viewer» без потерь?
scottbb
Jpegtran это путь. он может вращать и / или переворачивать JPEG без потерь, и его легко вызвать из скрипта, потому что это приложение CLI.
Sarge Borsch

Ответы:

31

Я бы порекомендовал любое из приложений из этого списка на JPEGclub.org , который разрабатывает и поддерживает программное обеспечение для Independent JPEG Group. У них есть бесплатный фрагмент кода, jpegtranкоторый может выполнять некоторые базовые преобразования (например, вращение) без перекодирования изображения.

Поворот изображений «наивным» способом (рендеринг в растровое изображение, переориентация растрового изображения и повторное сохранение) может привести к увеличению артефактов JPEG - и к большим файлам с менее полезными данными.

Приведенный выше список содержит программное обеспечение, которое, как известно, делает это «правильным образом». Другие программы тоже могут (возможно, с использованием другой базы кода), но, к сожалению, ImageMagick не является одним из них. Но по состоянию на август 2016 года существует 87 различных вариантов для множества различных вычислительных платформ, включая Windows.


Примечание от комментариев: ОП использовал этот цикл на основе этого ответа:

FOR %f IN (.\Src\*.*) DO jpegtran.exe -rotate 180 %f .\Rotated\%~nxf

с хорошими результатами.

mattdm
источник
1
Обратите внимание, что вращение без потерь работает, только если каждое измерение каждого изображения кратно 16 пикселям - 8, если не используется подвыбор цветности. В противном случае либо лишние пиксели будут потеряны, либо изображение будет дополнено рамкой. Например, 1080 не кратно 16!
Gnubie
2
Я вторую рекомендацию jpegtran; еще лучше, если вы заботитесь о том, чтобы миниатюра и Orientationтег EXIF exiftranоставались неизменными, вы можете подумать о том, чего нет в списке JPEGclub, но без потерь. Моя команда (в Linux) для этого будет exiftran -i -1 *.jpgили find . -name '*.jpg' -print0 | xjobs -0 -l 10 exiftran -i -1; это нужно будет адаптировать для оболочки Windows.
Тоби Спейт
@ Тоби Хорошее дополнение. Многие (большинство?) Из перечисленных программ также сохраняют и обновляют метаданные, что является одной из причин, по которой я рекомендую одну из них, а не просто jpegtranнапрямую.
Mattdm
Спасибо! Я использовал jpegtran на Windows. Поворот 180 это именно то, что мне нужно. Я поставил точную пакетную команду в вопросе для будущей ссылки.
Johns-305
@ Johns-305 Рад, что смог помочь. По вопросу редактирования см. Meta.photo.stackexchange.com/questions/1601/…
mattdm
9

Вы можете использовать ImageMagick с rotateопцией :

convert image.jpg -rotate 180 result.jpg

Вы должны иметь возможность применить эту команду к нескольким файлам, в зависимости от вашей среды.

значение NULL
источник
10
Обратите внимание, что это перекодирует JPEG, теряя качество.
Матдм
8

На Windows вы можете сделать это без какого-либо дополнительного программного обеспечения в двух операциях. Выберите файлы, которые вы хотите повернуть в проводнике файлов, щелкните правой кнопкой мыши и дважды выполните «поворот вправо» (или влево). Это будет сделано без потерь, если позволяет изображение (например, размеры не «смешные»).

Agent_L
источник
Какие "смешные" размеры? Почему размеры фотографии предотвращают вращение без потерь?
scottbb
2
После прочтения « Поверки Windows Photo Viewer» без потерь? , Теперь я понимаю. Оба размера должны быть кратны 8, чтобы их можно было вращать без потерь.
scottbb
1
Это лучший ответ. Я присоединился к сайту, чтобы поддержать это.
fi12
5

Вы можете использовать xnview для окон, в которых есть некоторые обработки в пакетном режиме, а также, для простого поворота изображений, есть возможность поворачивать изображения на основе данных exif.

Выберите все изображения (даже правильно ориентированные! Он будет знать, что они уже хорошо ориентированы), «поверните на основе exif», и он это сделает (без пересчета jpg, то есть без потери качества).

Как говорят на http://newsgroup.xnview.com/viewtopic.php?t=1420 :

Для этого вы выбираете все свои изображения и выбираете «Инструменты> Преобразования без потерь в формате JPG» (или выпадающий список символа «Преобразования без потерь в формате JPG» на панели инструментов). В диалоговом окне отметьте кнопку с надписью «EXIF», а затем нажмите «Go». XnView будет постоянно поворачивать изображения на основе флага ориентации EXIF.

И в следующий раз, если у вас достаточно недавнего gopro, вы можете также проверить его функцию: https://gopro.com/support/articles/what-is-auto-image-rotation

Оливье Дюлак
источник
Сохраняет ли GoPro правильные данные об ориентации EXIF? У Hero4 / Session есть датчик ориентации, но я не думаю, что какая-либо из старых моделей имеет.
vclaw
4

Предполагая, что ваши фотографии в формате JPEG, я довольно неравнодушен к JPEGCrops , простому и бесплатному инструменту для пакетной обработки изображений без потерь.

Вы можете обрезать до определенных соотношений сторон и / или повернуть.

тыс
источник
4

Могу ли я предложить пакетный режим Irfanview, который работает только на Windows. Irfanview также хорош для простых правок, но это не GIMP.

После установки выберите «Файл | Пакетная конвертация / переименование». Оттуда это становится немного сложнее, вам нужно выбрать все файлы, вам нужно указать папку назначения, и вам нужно нажать на кнопку «Дополнительно», чтобы увидеть дополнительные параметры. Он может вращаться на +/- 90 °, но для поворота на 180 ° вам нужно будет выбрать точное вращение в крайнем правом углу и ввести угол 180 °. Обратите внимание, что вы также можете изменить их размер, изменить качество JPEG и переименовать их.

Вы также можете сделать это довольно быстро, оставаясь в графическом интерфейсе и используя клавиатуру. Откройте любой файл в папке с картинками. Нажмите «R» два раза, чтобы повернуть дважды. Затем нажмите Ctrl-S, чтобы сохранить. Появятся два окна: одно типичное диалоговое окно для файла и второе для сжатия JPEG (если формат GoPro по умолчанию - JPEG). Я бы удостоверился, что показатель качества составляет не менее 90%. Затем сохраните файл; Вы должны быть в состоянии нажать клавишу Tab или Alt-S для сохранения. Может появиться диалоговое окно типа «Вы уверены» (возможно, его можно отключить). Затем просто нажмите пробел, чтобы перейти к следующему файлу в папке. Если у вас есть более 50 файлов, пакет может быть быстрее. Десять файлов, я просто делаю выше.

Ключевым моментом для Irfanview является то, что он похож на Blender, он не спрашивает вас, хотите ли вы Сохранить, если вы изменяете изображение.

RocketFeathers
источник
3
Это приведет к вращению с потерями - при его вращении, а затем при сохранении JPEG, вы теряете качество. В IrfanView лучше использовать функцию «Поворот без потерь JPEG» (Shift + J). Обратите внимание, что вы можете использовать вид миниатюр, чтобы выбрать все ваши изображения, а затем повернуть их все сразу.
vclaw
1
@RocketFeathers - Irfanview - самый простой инструмент, позволяющий сделать это без потерь в среде Windows. Но, как говорит vclaw, гораздо лучше использовать «JPEG Lossless Rotation», чтобы сделать это. Отредактируйте свой ответ, чтобы отразить это, и я буду голосовать.
Майкл С.
«он не спрашивает вас, хотите ли вы сохранить, если вы измените изображение». - Это можно изменить в меню «Параметры»> «Свойства / Настройки»> «Запросить сохранение изменений при выходе из программы».
MrWhite
3

FSViewer - полезная программа, которая может это сделать.

Откройте папку, в которой находятся изображения, выберите все, что вы хотите повернуть, нажмите F4 и перейдите на вкладку «Пакетное преобразование» в открывшемся окне. Нажмите «Дополнительные параметры» в правом нижнем углу, перейдите на вкладку «Повернуть». Проверьте «Flip / Rotate», затем «Rotate», затем выберите «180» ниже и нажмите «OK». Установите, где вы хотите сохранить эти и нажмите «Конвертировать».

Изменить: более быстрый и безболезненный способ - просто выбрать все нужные изображения и дважды нажать «Повернуть вправо и сохранить» на панели инструментов. Должен быть неразрушающим для JPEG.

К. Минков
источник
3

С окнами вы можете отметить все, если они в проводнике, затем щелкните правой кнопкой мыши и выберите вращаться по часовой стрелке. Сделайте это два раза, и ваши фотографии теперь правильно ориентированы.

Arjihad
источник
2

Вы знаете GIMP? Существует плагин под названием BIMP, который позволяет выполнять ту же операцию над набором изображений, используя графический интерфейс. Вы можете легко установить его, используя официальный установщик для Windows.

Вы также можете повторно сохранить их в другом формате или с другим коэффициентом сжатия, чтобы избежать большой потери качества.

Про совет: я сделал это: D

Неожиданный
источник
2
Я думаю, что вы хотели сказать «Отказ от ответственности», а не «Pro tip»: p Но отличное программное обеспечение! Время от времени мне нужны были пакетные операции на GIMP, и я вместо этого прибегнул к написанию кода Matlab. Я буду помнить ваш инструмент в следующий раз :)
Tasos Papastylianou
1

ImageMagick - это набор инструментов командной строки, которые работают с изображениями, и вы можете объединить эти инструменты с базовыми командами оболочки Unix, чтобы применить ту же команду к набору файлов. Есть много хороших примеров на Как повернуть все изображения в каталоге с помощью imagemagick? ,

Калеб
источник
Гм ... а если ОП на Windows и не использует Cygwin ...? :) Возможно, вы захотите добавить «и пакетные файлы Windows» или разверните ответ, чтобы указать, что ImageMagick - это не обязательно решение для UNIX, а только командная строка.
Инкиста
1
Попробую сегодня днем. Доступны двоичные файлы Windows.
Johns-305
1

Я лично использую Adobe Lightroom. Изображения можно легко повернуть и отредактировать, просто выберите изображения, которые вы хотите повернуть, щелкните правой кнопкой мыши и выберите параметр для преобразования изображений, повернув их на 180 градусов.

Если вы постоянно работаете с тысячами изображений, требующих пакетной обработки, особенно если они более сложны, чем вращение, например, настройка цвета или экспозиции, тогда LR, вероятно, является солидным вложением.

Мне не нравится, что Lightroom является закрытым исходным кодом, стоит денег и не будет работать в системах Linux. Тем не менее, я обнаружил, что функции намного превышают то, что доступно бесплатно.

Д.б.н.
источник
0

Вы можете использовать LiveBlox и построить конвейер, чтобы разрешить поворот изображения. Демо-версия на http://liveblox.org имеет блок поворота, поэтому это можно будет сделать.

Существует учебное руководство https://www.youtube.com/watch?v=kY0e5msQuiU, в котором показано, как сделать изменение размера пакетного изображения, вам просто нужно заменить фиксированный размер на вращатель, чтобы выполнить вращение.

Это позволит вам работать с каждым изображением одним щелчком мыши.

robby987
источник
-1

$ для F в * jpg; do convert -rotate 180 $ F "$ (базовое имя $ F .jpg) _R.jpg" && echo "Done $ F"; сделано

Объяснение: * для F в .jpg часть команды назначает имя файла переменной, которая может быть вызвана позже, чтобы переименовать файл в [исходное имя файла} _R.jpg

«сделать новообращенного -rotate 180» сообщает компьютеру , что вы хотели бы ваши изображения преобразуют существо поворачивается на 180 градусов.

Часть команды «$ (basename $ F .jpg) _R.jpg» указывает на новое имя файла.

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

echo «Done $ F» говорит компьютеру сказать вам («echo»), что каждый файл был успешно повернут. Подраздел $ F команды вызывает исходную переменную имени файла, поэтому вывод, вероятно, скажет что-то вроде «Done file1.jpg»

И для этой части нужен sh / csh / bash.

bluerizlagirl
источник
5
Возможно, это работает, но без объяснения, это не очень хороший ответ. Пожалуйста, объясните, в каком контексте это решение, если применимо.
ноль
1
Это расширение нулевого ответа с использованием ImageMagick?
MikeW
Это не работает, как ожидалось, если *_R.jpgв каталоге уже есть файлы.
Очки
Спасибо за разъяснения, я не уверен, является ли установка оболочки UNIX на Windows практичным, но не менее.
ноль
оч, вы можете изменить _R.jpg на что угодно (например, "_rotated.jpg"). Вы правы, что это будет проблематично, если в каталоге уже есть файлы _R.jpg.
д.б.н.