Redimensionar imagens para um valor de altura específico no ImageMagick?

27

Procurei por isso e não consigo encontrar uma solução facilmente implementável.

Atualmente, estou trabalhando em um aplicativo que lida com panoramas. À medida que saem do processo de costura em lote, as dimensões têm uma média de 18000x4000. Usando o ImageMagick, como posso diminuir o tamanho dessas imagens para um valor de altura específico, mantendo a proporção?

De acordo com o manual, a convertoperação leva em altura e largura para redimensionar, mantendo a mesma proporção. O que eu gostaria é colocar 600 e 1000 na minha função de redimensionamento existente e ter uma imagem visível regular e um tamanho reduzido.

Jason
fonte
O IIRC usa a dimensão menor como base para a operação de redimensionamento, ou seja, se você especificar algo como 20000x600, usará a altura 600 como base para calcular a largura convertida para manter a proporção. Eu me deixei claro?
Devius
Precisa ser o ImageMagick? Os comandos Phatch podem ser com script, o comando 'fit' faz exatamente o que você está procurando. photobatch.wikidot.com/action-fit
Veazer

Respostas:

37

De acordo com a documentação do ImageMagick , sugiro usar -geometry x600, enquanto x600isso significa que a nova imagem tem uma altura de 600 px com a mesma proporção da imagem antiga.


Para uma única imagem, você pode executar:

convert input.png -geometry x600 output.png

Se você preferir converter todas as imagens de uma pasta em uma execução, alterne para ela (por exemplo cd ~/Pictures/panoramas/) e use

mogrify -geometry x600 *.png

Mas tenha cuidado com isso, porque substitui os arquivos de imagem originais . Para evitar que você pudesse

  1. crie uma nova pasta ( mkdir ~/Pictures/panoramas/small)
  2. copie as imagens para esta pasta ( cp ~/Pictures/panoramas/*.png ~/Pictures/panoramas/small) e
  3. edite as imagens nesta nova pasta ( cd ~/Pictures/panoramas/small && mogrify -geometry x600 *.png).
Jakob
fonte
1

redimensionar todos os arquivos em uma pasta, pode usar algo como

mogrify -resize 800x1094! * jpg # mantém a proporção da imagem

--- altere o tamanho e a extensão conforme adequado


fonte
1
Isso não mantém a proporção da imagem de origem
Rob
1
@ Rob, se você quiser manter a proporção, deixe o "!" Fora.
Erick
Obrigado @Erick, é muito antigo, mas eu provavelmente estava apontando que essa resposta não responde corretamente, pois o OP queria manter a proporção. : D
Rob