Як повернути набір зображень з командного рядка?


17

У мене великий набір зображень JPEG, всі з однаковою роздільною здатністю. Це займе занадто багато часу, щоб відкрити кожну з них всередині графічного інтерфейсу зображених або gimp.

Як домогтися обертання та збереження кожної картинки як одного і того ж імені файлу?


3
Дивіться тут . Однак остерігайтеся, що перекодування JPEG, як правило, втрачає.
Satō Katsura

Відповіді:


22

Ви можете використовувати convertкоманду:

 convert input.jpg -rotate -degrees out.jpg

e, g:

convert input.jpg -rotate -180 out.jpg

Збережіть його з такою ж назвою:

convert file.jpg -rotate -180 file.jpg

Оберніть усі файли:

for photo in *.jpg ; do convert $photo -rotate 90 $photo ; done

Редагувати

Ви можете використовувати інструменти mogrifyкомандного рядка (найкращий інструмент), рекомендовані @ don-crissti

mogrify -rotate 90 *.jpg

1
thx, як я можу сказати команді, що ім'я файлу, що знаходиться ліворуч від -1rotate -180, має бути таким же, як праворуч від нього, якщо файлів багато?
акулант

Обертання файлу на 180 градусів завжди дасть однаковий результат, незалежно від того, повертаєте ви його вліво або вправо.
djsmiley2k TMW

@ GAD3R 360 градусів призведе до того ж зображення згодом. Обертання зображення вліво або вправо на 180 градусів, причому обидва дають вам однакове зображення (але догори ногами).
djsmiley2k TMW

2
$CAPITAL_NAMESслід залишити змінні середовища; для цих локальних змінних у скриптах або командах оболонки$normal_lowercase
cat

2
convertповторно кодує JPEG і, отже, втрачає. Краще використовуватиjpegtran
imz - Іван Захарящев

16

Для зображень JPEG та обертання під прямим кутом використовуйте jpegtranабо exiftran, оскільки вони можуть обертати зображення без втрат.

for f in *.jpg ; do 
    jpegtran -rotate 180 "$f" > "${f%.jpg}-rotated.jpg"
done

Або обертатись на місці:

for f in *.jpg ; do
    jpegtran -rotate 180 -outfile "$f" "$f"
done

exiftranтакож є -aпрапор для автоматичного обертання зображення на основі того, що пише тег орієнтації EXIF.


Для обертання проти годинникової стрілки (лівий кут) jpegtranвикористовуйте -rotate 270та використовуйте -2прапор exiftran відповідно до інструкції.
Тимо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.