Como eu giro muitas fotos digitais em 180 graus em uma operação?

20

Tenho milhares de imagens tiradas com uma GoPro de cabeça para baixo.

Estou procurando uma maneira, um aplicativo realmente, que possa girá-los todos, 180 graus, em uma operação.

Analisei todas as opções no próprio software da GoPro, mas não a encontro apenas para fotos. Você pode girar enquanto faz um vídeo, mas eu quero manter as imagens individuais.

Estou no Windows.

Johns-305
fonte
Relacionados e muito relevantes: As rotações do “Windows Photo Viewer” não têm perdas?
scottbb 02/09
jpegtran é o caminho a percorrer. ele pode girar e / ou inverter JPEGs sem perdas e é fácil chamar de um script porque é um aplicativo CLI.
Sarge Borsch

Respostas:

31

Eu recomendaria qualquer um dos aplicativos desta lista no JPEGclub.org , que desenvolve e mantém software para o Independent JPEG Group. Eles têm um pedaço de código gratuito chamado jpegtranque pode fazer algumas transformações básicas (como rotação) sem recodificar a imagem.

Girar imagens da maneira "ingênua" (renderizar em um bitmap, reorientar o bitmap e salvar novamente) pode resultar em artefatos JPEG aumentados - e em arquivos maiores com dados menos úteis.

A lista acima contém um software conhecido por fazê-lo "da maneira certa". Outros softwares também podem (talvez usando uma base de código diferente), mas o ImageMagick não é um deles, infelizmente. Mas, em agosto de 2016, existem 87 opções diferentes para muitas plataformas de computação diferentes, incluindo o Windows.


Nota dos comentários: o OP usou esse loop com base nesta resposta:

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

com bons resultados.

mattdm
fonte
1
Observe que a rotação sem perdas funciona apenas se cada dimensão de cada imagem for um múltiplo de 16 pixels - 8 se a subamostragem de croma não for usada. Caso contrário, o excesso de pixels será perdido ou a imagem será preenchida com uma borda. Por exemplo, 1080 não é um múltiplo de 16!
Gnubie
2
Eu segundo a recomendação de jpegtran; melhor ainda, se você se preocupa em manter a miniatura e a Orientationtag do EXIF consistentes, considere o exiftranque está inexplicavelmente ausente da lista JPEGclub, mas não tem perdas. Meu comando (no Linux) para isso seria exiftran -i -1 *.jpgou find . -name '*.jpg' -print0 | xjobs -0 -l 10 exiftran -i -1; isso precisará ser adaptado para o shell do Windows.
Toby Speight
@Toby Boa adição. Muitos (a maioria?) Dos programas listados também preservam e atualizam os metadados, razão pela qual recomendo um deles, em vez de apenas jpegtrandiretamente.
mattdm
Obrigado! Eu usei o jpegtran no Windows. A rotação 180 é exatamente o que eu precisava. Eu coloquei o comando de lote exato na pergunta para referência futura.
Johns-305
@ Johns-305 Ainda bem que pude ajudar. Na edição da pergunta, consulte meta.photo.stackexchange.com/questions/1601/…
mattdm 4/16/16
9

Você pode usar o ImageMagick com a rotateopção :

convert image.jpg -rotate 180 result.jpg

Você deve poder aplicar esse comando a vários arquivos, dependendo do seu ambiente.

nulo
fonte
10
Observe, porém, que isso irá recodificar o jpeg, perdendo qualidade.
Mattdm
8

No Windows, você pode fazer isso sem nenhum software extra em DUAS operações. Selecione os arquivos que você deseja girar no File Explorer, clique com o botão direito do mouse e faça "girar para a direita" (ou para a esquerda) duas vezes. Isso será feito sem perdas se a imagem permitir (por exemplo, as dimensões não são "engraçadas").

Agent_L
fonte
O que são dimensões "engraçadas"? Por que as dimensões de uma foto impedem a rotação sem perdas?
scottbb
2
Depois de ler As rotações do “Windows Photo Viewer” não têm perdas? , Eu entendo agora. Ambas as dimensões precisam ser um múltiplo de 8 para serem rotacionadas sem perdas.
scottbb 2/09/16
1
Esta é a melhor resposta. Entrei no site apenas para fazer uma votação positiva.
precisa saber é
5

Você pode usar o xnview no Windows, que possui alguns processos em lote e, para uma simples rotação de imagens, tem a opção de girar imagens com base nos dados exif.

Selecione todas as imagens (mesmo as orientadas corretamente! Saberá que elas já estão bem orientadas), "gire com base no exif" e fará isso (sem recalcular o jpg, sem perda de qualidade).

Como se costuma dizer em http://newsgroup.xnview.com/viewtopic.php?t=1420 :

Para fazer isso, selecione todas as suas imagens e selecione "Ferramentas> Transformação sem perdas do JPG" (ou lista suspensa do símbolo 'Transformações sem perdas do JPG' na barra de ferramentas). Na caixa de diálogo, verifique o botão com "EXIF" e pressione "Ir". O XnView girará permanentemente as imagens com base no sinalizador de orientação EXIF.

E para a próxima vez, se você tiver um gopro recente o suficiente, verifique também o recurso: https://gopro.com/support/articles/what-is-auto-image-rotation

Olivier Dulac
fonte
A GoPro realmente salva os dados de orientação EXIF ​​corretos? O Hero4 / Session tem um sensor de orientação, mas acho que nenhum dos modelos mais antigos tem.
vclaw
4

Supondo que suas fotos estejam no formato JPEG, sou bastante parcial com o JPEGCrops , uma ferramenta simples e gratuita para processamento em lote de imagens sem perdas.

Você pode cortar para proporções específicas e / ou girar.

ths
fonte
4

Posso sugerir o modo de lote do Irfanview, que roda apenas no Windows. O Irfanview também é bom para edições simples, mas não é o GIMP.

Depois de instalado, selecione "Arquivo | Conversão em lote / Renomear". A partir daí, fica um pouco complicado, você precisa selecionar todos os arquivos, especificar uma pasta de destino e clicar no botão Avançado para ver as opções avançadas. Ele pode girar +/- 90 °, mas para fazer 180 °, você precisará escolher uma rotação fina na extrema direita e inserir 180 °. Observe que você também pode redimensioná-los, alterar a qualidade JPEG e renomeá-los.

Você também pode fazer isso rapidamente, permanecendo na GUI e usando o teclado. Abra qualquer arquivo na pasta de imagens. Pressione 'R' duas vezes para girar duas vezes. Em seguida, pressione Ctrl-S para salvar. Aparecerão duas janelas, uma na caixa de diálogo de arquivo típica e outra na compactação JPEG (se o formato padrão da GoPro for JPEG). Eu garantiria que o fator de qualidade seja de pelo menos 90%. Salve o arquivo; você poderá pressionar a tecla Tab ou Alt-S para salvar. Uma caixa de diálogo do tipo "Tem certeza" pode aparecer (pode ser possível desativá-la). Em seguida, basta pressionar a barra de espaço para avançar para o próximo arquivo na pasta. Se você tiver mais de 50 arquivos, o lote poderá ser mais rápido. Dez arquivos, eu apenas faço o acima.

O principal aspecto do Irfanview é que é como o Blender, ele não pergunta se você deseja Salvar, se modificar uma imagem.

FoguetePenas
fonte
3
Isso fará uma rotação com perdas - como girá-las e salvar novamente o JPEG, para que você perca qualidade. No IrfanView, é melhor usar o recurso "Rotação sem perdas de JPEG" (Shift + J). Observe que você pode usar a visualização em miniatura para selecionar todas as suas imagens e girá-las todas de uma vez.
vclaw 01/09/16
1
@RocketFeathers - Irfanview é a ferramenta mais fácil para fazer isso sem perdas em um ambiente Windows. Mas, como diz a vclaw, é muito melhor usar a "Rotação sem perdas de JPEG" para fazer isso. Edite sua resposta para refletir isso e eu a votarei.
Michael C
"não pergunta se você deseja Salvar se modificar uma imagem." - Isso pode ser alterado em Opções> Propriedades / Configurações ...> Pedir para salvar as alterações na saída do programa.
MrWhite 4/16
3

O FSViewer é um programa útil que pode fazer isso.

Abra a pasta onde estão as imagens, selecione tudo o que deseja girar, pressione F4 e vá para a guia 'Batch Convert' na janela que se abre. Clique em 'Opções avançadas' no canto inferior direito, vá para a guia 'Girar'. Marque 'Virar / Girar', depois 'Girar', selecione '180' abaixo e pressione OK. Defina onde você deseja que eles sejam salvos e clique em 'Converter'.

Editar: uma maneira mais rápida e simples é selecionar todas as imagens desejadas e clicar duas vezes em 'Girar para a direita e salvar' na barra de ferramentas. Deve ser não destrutivo para JPEGs.

K. Minkov
fonte
3

Com as janelas, você pode marcar todas as opções no explorer e clicar com o botão direito do mouse e escolher girar no sentido horário. Faça isso duas vezes e suas fotos estão agora corretamente orientadas.

Arjihad
fonte
2

Você conhece o GIMP? Existe um plug-in chamado BIMP que permite executar a mesma operação em um conjunto de imagens, usando uma interface gráfica. Você pode instalá-lo facilmente usando o instalador oficial do Windows.

Você também pode salvá-los novamente em outro formato ou com uma taxa de compactação diferente para evitar grandes perdas de qualidade.

Dica profissional: Consegui: D

O inesperado
fonte
2
Eu acho que você quis dizer "Isenção de responsabilidade" em vez de "Dica profissional": p Mas ótimo software! Eu precisava de operações em lote no GIMP de vez em quando e recorria à escrita de código matlab. Vou manter a sua ferramenta em mente para a próxima vez :)
Tasos Papastylianou
1

O ImageMagick é um conjunto de ferramentas de linha de comando que operam em imagens, e você pode combinar essas ferramentas com comandos básicos do shell Unix para aplicar o mesmo comando a um conjunto de arquivos. Existem muitos bons exemplos em Como girar todas as imagens em um diretório com o imagemagick? .

Caleb
fonte
Hum ... e se o OP estiver no Windows e não usar Cygwin ...? :) Talvez você queira adicionar "e arquivos em lotes do Windows" ou expandir a resposta para indicar que o ImageMagick não é necessariamente uma solução somente para UNIX, apenas uma linha de comando.
Inkist # 1/16
1
Vou tentar esta tarde. Existem binários do Windows disponíveis.
Johns-305
1

Eu pessoalmente uso o Adobe Lightroom. As imagens podem ser giradas e editadas facilmente em lote, basta selecionar as imagens que você deseja girar, clicar com o botão direito e selecionar a opção para transformar as imagens girando 180 graus.

Se você estiver trabalhando consistentemente com milhares de imagens que requerem processamento em lote, principalmente se for mais complexo do que o ajuste da cor ou exposição da rotação, o LR é provavelmente um investimento sólido.

Não gosto que o Lightroom seja de código fechado, custe dinheiro e não funcione em sistemas Linux. No entanto, descobri que os recursos excedem em muito o que está disponível gratuitamente.

SB Ph.D.
fonte
0

Você pode usar o LiveBlox e criar um pipeline para permitir a rotação da imagem. A versão demo em http://liveblox.org possui um bloco de rotação, permitindo que isso seja feito.

Existe um tutorial https://www.youtube.com/watch?v=kY0e5msQuiU que mostra como redimensionar a imagem em lote; você só precisa substituir o redimensionamento de tamanho fixo pelo rotador para fazer a rotação.

Isso permitiria que você trabalhasse em cada imagem com um único clique.

robby987
fonte
-1

$ para F em * jpg; converta -rotate 180 $ F "$ (nome base $ $ .jpg) _R.jpg" && echo "Concluído $ F"; feito

Explicação: * para F em parte .jpg do comando atribui o nome do arquivo a uma variável, que pode ser recuperada posteriormente para renomear o arquivo como [nome original do arquivo} _R.jpg

o "do convert -rotate 180" informa ao computador que você gostaria que suas imagens fossem convertidas girando 180 graus.

A parte "$ (nome da base $ F .jpg) _R.jpg" do comando indica o novo nome do arquivo.

O && informa ao computador que um comando adicional está chegando, mas que o computador só pode executar o comando se o comando anterior (girar e renomear) tiver sido bem-sucedido.

eco "Done $ F" diz ao computador para lhe dizer ("eco" a você) que cada arquivo foi rotacionado com sucesso. A subparte $ F do comando está recuperando a variável inicial do nome do arquivo; portanto, a saída provavelmente dirá algo para o efeito de "Concluído file1.jpg"

E, é preciso sh / csh / bash para que esta peça funcione.

bluerizlagirl
fonte
5
Isso está funcionando, mas sem uma explicação, não é uma boa resposta. Por favor, explique em que contexto esta solução, se aplicável.
null
1
Isso é uma expansão da resposta de null usando o ImageMagick?
MikeW
Isso não funciona como esperado se já houver *_R.jpgarquivos no diretório.
pts
Obrigado pelo esclarecimento, não tenho certeza se a instalação de um shell UNIX no Windows é uma abordagem prática, mas não menos importante.
null
pts, você pode alterar o _R.jpg para o que quiser (como "_rotated.jpg"). Você está certo de que isso será problemático se você já tiver arquivos _R.jpg no diretório
SB Ph.D.