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


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.