Поворот изображений с терминала

18

У меня есть каталог с большим количеством изображений, но они находятся в неправильной ориентации. Я хочу повернуть изображения для правильной ориентации (в основном ± 90 o ). Использование изображения (фотоснимка с фотоснимками) Я могу повернуть их индивидуально, нажав кнопку поворота, но это слишком утомительно.

Я просмотрел man shotwell и shotwell --help-all , но ничего не объясняет, как вызвать команду rotate из командной строки.

Можно ли каким-либо образом вызвать команду поворота дробовика (или любого другого зрителя) с терминала? Также можно приветствовать любые другие способы поворота изображений.

    
задан Prakash Gautam 02.03.2015 в 09:20
источник

5 ответов

17

Если вы ищете чистую реализацию bash, команда convert ImageMagick - это то, что вы ищете:

for szFile in /path/*.png
do 
    convert "$szFile" -rotate 90 /tmp/"$(basename "$szFile")" ; 
done

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

(и он будет работать во всех последних выпусках Ubuntu как стандартного программного обеспечения)

    
ответ дан Fabby 06.03.2015 в 16:52
источник
16
for file in *.JPG; do convert $file -rotate 90 rotated-$file; done

Это скопирует повернуть и переименует файлы.

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

Обратите внимание, что это зависит от регистра: если ваши файлы называются * .jpg, замените их нижним регистром (или * .png ...) соответственно.

    
ответ дан nutty about natty 13.08.2015 в 14:56
4

Вот как я это делаю:

  1. Установить gThumb

    sudo apt-get install gthumb
    
  2. Откройте nautilus и перейдите в каталог изображений. Щелкните правой кнопкой мыши по одному и выберите Open with -> gthumb .

  3. В меню view выберите Browser или нажмите клавишу Esc . Это откроет браузер каталогов, в котором будут показаны все ваши изображения.

  4. Нажмите Ctrl и выберите изображения, которые вы хотите повернуть, или выберите их все с помощью Ctrl + A .

  5. На панели инструментов выберите Tools , а затем Rotate Right или Rotate Left в зависимости от ваших предпочтений.

ответ дан Parto 02.03.2015 в 11:55
0

Хорошим решением является создание набора резервных копий (например, prefixed backup- ), поворот исходных файлов, создающих набор новых файлов (префикс, например, rotated- ), предоставляющий вам набор

  • img-1.png
  • backup-img-1.png
  • rotated-img-1.png
  • img-2.png
  • ... и т. д.

Инструменты mv / cp [bash globbing] могут добавлять только префиксы, это грязно, чтобы отнять их (он будет использовать расширение параметра, ewww ...)

Инструмент rename позволяет использовать синтаксис замены s/before/after/ (из инструмента sed ) для замены этого префикса защиты и перезаписывания исходных файлов, поэтому ваш общий процесс для заданного набора изображений img- < strong> {1..n} .png будет:

for imgf in img-*.png; do mv "$imgf" "backup-$imgf"; done
for imgf in backup-img-*.png; do convert "$imgf" -rotate 90 "rotated-$imgf"; done

Примечание:

  • вы можете использовать cp , а не mv , но тогда есть 2 копии оригинала, лежащего вокруг (недостаток - вы получаете сцепление префиксов, rotated-backup- ... ")
  • вращение по часовой стрелке ( -rotate 270 получает вас на 90 ° против часовой стрелки)
  • для отслеживания прогресса, добавьте echo "Rotating ${imgf#backup-} ... "; после convert вызовов (до done )
  • для более компактной формы (например, набора нумерованных файлов), используйте некоторое расширение параметра, например echo "$(echo ${imgf#backup-img-} | cut -d\. -f 1)..."; вместо

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

Затем после проверки вы не испортились, удалите изображения, переместив их обратно к оригиналу

rename 's/^rotated-//;' rotated-*
rm backup-img-*
    
ответ дан Louis Maddox 09.09.2016 в 22:39
0

Вы можете скопировать / вставить этот код и сохранить его как rotate.sh

#!/bin/bash -e

CUR_DIR=$(pwd)
cd 
for file in *.jpg
do
    convert $file -rotate 90 $file
done
cd $CUR_DIR

После сохранения этого файла запустите его с терминала с помощью ./rotate.sh folder_containing_images .     

ответ дан vin 31.03.2017 в 21:13