Rodar imagens do terminal

20

Eu tenho um diretório com muitas imagens, mas elas estão em orientação errada. Eu quero girar as imagens para corrigir a orientação (principalmente ± 90 o ). Usando o visualizador de imagem (shotwell photo) eu posso girá-los individualmente clicando no botão de rotação, mas isso é muito tedioso.

Eu olhei para man shotwell e shotwell --help-all , mas não há nada que explique como invocar o comando rotate a partir da linha de comando.

Existe alguma maneira de invocar o comando de giro do shotwell (ou qualquer outro visualizador) do terminal? Ou qualquer outro método para girar imagens também é bem-vindo.

    
por Prakash Gautam 02.03.2015 / 09:20

5 respostas

20

Se você está procurando uma implementação pura, o comando convert do ImageMagick é o que você está procurando:

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

Acima, deixaremos os arquivos existentes intactos e copiaremos os novos para /tmp , para que você possa movê-los / copiá-los ou até mesmo substituir os existentes após a conversão.

(e funcionará em todos os lançamentos recentes do Ubuntu como software padrão)

    
por Fabby 06.03.2015 / 16:52
18
for file in *.JPG; do convert $file -rotate 90 rotated-$file; done

Isso copiará girar e renomear seus arquivos.

Se você quiser deixar os arquivos originais intocados ainda, este método pode funcionar bem para você ...

Observe que isso faz distinção entre maiúsculas e minúsculas: se os arquivos forem nomeados * .jpg, substitua por letras minúsculas (ou * .png ...) adequadamente.

    
por nutty about natty 13.08.2015 / 14:56
4

Veja como eu faço:

  1. Instale o gThumb

    sudo apt-get install gthumb
    
  2. Abra o nautilus e vá para o diretório de imagens. Clique com o botão direito do mouse em um e escolha Open with -> gthumb .

  3. No menu view , escolha Browser ou pressione a tecla Esc . Isso abrirá o navegador de diretórios mostrando todas as suas imagens.

  4. Pressione Ctrl e selecione as imagens que deseja girar ou selecione todas elas através de Ctrl + A .

  5. Na barra de ferramentas, selecione Tools e, em seguida, Rotate Right ou Rotate Left dependendo de sua preferência.

por Parto 02.03.2015 / 11:55
0

Uma boa solução é fazer um conjunto de backups (por exemplo, backup- prefixado), girar os arquivos originais produzindo um conjunto de novos arquivos (com prefixo rotated- ), fornecendo um conjunto de

  • img-1.png
  • backup-img-1.png
  • rotated-img-1.png
  • img-2.png
  • ... e assim por diante

O mv / cp tools [bash globbing] só pode adicionar prefixos, é confuso tirá-los (ele usaria a expansão de parâmetros, ewww ...)

A ferramenta rename permite usar a sintaxe de substituição s/before/after/ (da ferramenta sed ) para trocar esse prefixo de salvaguarda e sobrescrever os arquivos originais, para que todo o processo de um conjunto de imagens img- < strong> {1..n} .png seria:

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

Nota:

  • você poderia usar cp em vez de mv , mas depois há 2 cópias do original por aí (desvantagem é a concatenação de prefixos, " rotated-backup- ...")
  • a rotação é no sentido horário ( -rotate 270 você fica 90 ° no sentido anti-horário)
  • para acompanhar o progresso, adicione echo "Rotating ${imgf#backup-} ... "; após convert chamadas (antes de done )
  • para um formulário mais compacto (por exemplo, um conjunto de arquivos numerados), use alguma expansão de parâmetro como echo "$(echo ${imgf#backup-img-} | cut -d\. -f 1)...";

    (Você não pode remover o prefixo e o sufixo na mesma expansão do bash param, portanto use cut )

Depois de verificar que você não estragou tudo, exclua as fotos, movendo-as de volta ao original

rename 's/^rotated-//;' rotated-*
rm backup-img-*
    
por Louis Maddox 09.09.2016 / 22:39
0

Você pode copiar / colar esse código e salvá-lo como rotate.sh

#!/bin/bash -e

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

Depois de salvar este arquivo, execute-o no terminal usando ./rotate.sh folder_containing_images .

    
por vin 31.03.2017 / 21:13