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

Джонс-305

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

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

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

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

Я на Windows.

Скоттбб

Связанный и очень актуальный: вращение «Windows Photo Viewer» без потерь?

Показать имя

jpegtran - это путь. он может вращать и/или переворачивать файлы JPEG без потерь, и его легко вызывать из скрипта, поскольку это приложение CLI.

матдм

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

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

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


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

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

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

Гнуби

Обратите внимание, что вращение без потерь работает только в том случае, если каждое измерение каждого изображения кратно 16 пикселям — 8, если субдискретизация цветности не используется. В противном случае либо будут потеряны лишние пиксели, либо изображение будет дополнено рамкой. Например, 1080 не кратно 16!

Тоби Спейт

Я поддерживаю рекомендацию jpegtran; еще лучше, если вы заботитесь о том, чтобы миниатюра и Orientationтег EXIF ​​​​были согласованными, вы можете подумать о exiftranтом, что необъяснимо отсутствует в списке JPEGclub, но без потерь. Моя команда (в Linux) для этого будет exiftran -i -1 *.jpgили find . -name '*.jpg' -print0 | xjobs -0 -l 10 exiftran -i -1; это потребует адаптации для оболочки Windows.

матдм

@ Тоби Хорошее дополнение. Многие (большинство?) из перечисленных программ также сохраняют и обновляют метаданные, и это одна из причин, по которой я рекомендую одну из них, а не просто jpegtranнапрямую.

Джонс-305

Благодарю вас! Я использовал jpegtran в Windows. Поворот на 180 — это именно то, что мне было нужно. Я указал точную пакетную команду в вопросе для будущей ссылки.

матдм

@ Johns-305 Рад, что смог помочь. Об изменении вопроса см. meta.photo.stackexchange.com/questions/1601/…

Джонс-305

@mattdm Должен ли я тогда редактировать отмеченный ответ? Как правильно сообщить фактическое решение?

матдм

@ Johns-305 Johns-305 Установка флажка «принято», как вы это сделали, означает, что ответ сработал для вас — больше ничего делать не нужно. Если вы хотите добавить больше деталей, вы можете добавить их здесь в виде комментариев (также как и вы). Если это простое дополнение, отредактировать ответ можно; если это сложное изменение, вы можете опубликовать это как свой собственный ответ.

Агент_L

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

Скоттбб

Что такое «смешные» размеры? Почему размеры фотографии препятствуют вращению без потерь?

Скоттбб

После прочтения Являются ли вращения «Windows Photo Viewer» без потерь? , Теперь я понимаю. Оба размера должны быть кратны 8, чтобы их можно было вращать без потерь.

фи12

Это лучший ответ. Я зарегистрировался на сайте только для того, чтобы проголосовать за это.

нулевой

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

convert image.jpg -rotate 180 result.jpg

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

матдм

Обратите внимание, что это приведет к перекодированию jpeg с потерей качества.

Оливье Дюлак

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

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

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

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

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

vclaw

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

тыс.

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

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

К. Минков

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

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

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

РакетаПерья

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

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

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

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

vclaw

Это приведет к вращению с потерями - при вращении их, а затем повторном сохранении JPEG вы теряете качество. В IrfanView лучше использовать функцию "Вращение JPEG без потерь" (Shift+J). Обратите внимание, что вы можете использовать режим эскизов, чтобы выбрать все ваши изображения, а затем повернуть их все сразу.

Майкл С

@RocketFeathers — Irfanview — самый простой инструмент, с помощью которого можно сделать это без потерь в среде Windows. Но, как говорит vclaw, для этого гораздо лучше использовать «Вращение без потерь JPEG». Отредактируйте свой ответ, чтобы отразить это, и я поддержу его.

Мистер Уайт

«Он не спрашивает вас, хотите ли вы сохранить, если вы изменяете изображение». - Это можно изменить в «Параметры» > «Свойства/Настройки...» > «Попросить сохранить изменения при выходе из программы».

Арджихад

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

Неожиданный

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

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

Совет от профессионала: я сделал это :D

Тасос Папастилиану

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

Калеб

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

инкиста

Гм... а если OP работает в Windows и не использует Cygwin...? :) Возможно, вы захотите добавить «и пакетные файлы Windows» или расширить ответ, чтобы указать, что ImageMagick не обязательно является решением только для UNIX, а только для командной строки.

Джонс-305

Попробую сегодня днем. Доступны двоичные файлы Windows.

С.Б. к.т.н.

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

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

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

Робби987

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

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

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

блюризлагерл

$ для F в *jpg; do convert -rotate 180 $F "$(basename $F .jpg)_R.jpg" && echo "Готово $F"; Выполнено

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

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

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

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

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

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

нулевой

Возможно, это работает, но без объяснения это не очень хороший ответ. Пожалуйста, объясните, в каком контексте это решение, если применимо.

МайкВ

Является ли это расширением нулевого ответа с использованием ImageMagick?

очки

Это не работает должным образом, если *_R.jpgв каталоге уже есть файлы.

нулевой

Спасибо за разъяснение, я не уверен, что установка оболочки UNIX в Windows является практичным подходом, но это не менее подход.

С.Б. к.т.н.

pts, вы можете изменить _R.jpg на что угодно (например, «_rotated.jpg»). Вы правы, что это будет проблематично, если у вас уже есть файлы _R.jpg в каталоге.