¿Cambiar el tamaño de las imágenes a un valor de altura específico en ImageMagick?

27

He buscado esto y no puedo encontrar una solución fácil de implementar.

Actualmente estoy trabajando en una aplicación que se ocupa de panoramas. A medida que salen del proceso de costura por lotes, las dimensiones promedian 18000x4000. Usando ImageMagick, ¿cómo puedo reducir esas imágenes a un valor de altura específico mientras mantengo la relación de aspecto?

Según el manual, la convertoperación requiere tanto la altura como el ancho para cambiar el tamaño mientras se mantiene la misma relación de aspecto. Lo que me gustaría es poner 600 y 1000 en mi función de script de cambio de tamaño existente y tener tanto una imagen visible regular como un tamaño reducido.

Jason
fuente
IIRC utiliza la dimensión más pequeña como base para la operación de cambio de tamaño, es decir, si especifica algo como 20000x600, utilizará la altura de 600 como base para calcular el ancho convertido para mantener la relación de aspecto. ¿Me dejé claro?
devius
¿Necesita ser ImageMagick? Los comandos Phatch pueden ser programados, el comando 'fit' hace exactamente lo que estás buscando. photobatch.wikidot.com/action-fit
Veazer

Respuestas:

37

De acuerdo con la documentación de ImageMagick , sugiero usar -geometry x600, mientras x600que significa que la nueva imagen tiene una altura de 600 px con la misma relación de aspecto que la imagen anterior.


Para una sola imagen , puede ejecutar:

convert input.png -geometry x600 output.png

Si prefiere convertir todas las imágenes de una carpeta en una ejecución, cambie a ella (es decir cd ~/Pictures/panoramas/) y use

mogrify -geometry x600 *.png

Pero tenga cuidado con eso, porque sobrescribe los archivos de imagen originales . Para evitar que puedas

  1. crear una nueva carpeta ( mkdir ~/Pictures/panoramas/small)
  2. copie las imágenes en esta carpeta ( cp ~/Pictures/panoramas/*.png ~/Pictures/panoramas/small) y
  3. edite las imágenes en esta nueva carpeta ( cd ~/Pictures/panoramas/small && mogrify -geometry x600 *.png).
Jakob
fuente
1

para cambiar el tamaño de todos los archivos en una carpeta, puede usar algo como

mogrify -resize 800x1094! * jpg # mantener la relación de aspecto de la imagen

--- cambie el tamaño y la extensión según convenga


fuente
1
Esto no mantiene la relación de aspecto de la imagen de origen
Rob
1
@Rob si quieres mantener la relación de aspecto, deja el "!" fuera.
Erick
Gracias @Erick, es bastante antiguo, pero probablemente estaba señalando que esta respuesta no responde correctamente ya que el OP quería retener la relación de aspecto. : D
Rob