Tengo cinco imágenes de tamaños: 600x30, 600x30, 600x30, 600x30, 810x30. Sus nombres son: 0.png, 1.png, 2.png, 3.png, 4.png, respectivamente.
¿Cómo los fusiono horizontalmente para hacer una imagen de tamaño 3210x30 con ImageMagick?
Tengo cinco imágenes de tamaños: 600x30, 600x30, 600x30, 600x30, 810x30. Sus nombres son: 0.png, 1.png, 2.png, 3.png, 4.png, respectivamente.
¿Cómo los fusiono horizontalmente para hacer una imagen de tamaño 3210x30 con ImageMagick?
Respuestas:
ImageMagick se envía con la montage
utilidad. El montaje agregará cada imagen una al lado de la otra, lo que le permitirá ajustar el espacio entre cada imagen ( -geometry
) y el diseño general ( -tile
).
montage [0-5].png -tile 5x1 -geometry +0+0 out.png
Se pueden encontrar otros ejemplos en la página de uso de montaje
[0-5].png
producirá "0.png, 1.png, 2.png, 3.png, 4.png, 5.png", seis archivos diferentes, pero tile 5x1
solo tomará cinco de ellos, dejándolo con dos archivos de salida. Esto debería usar [0-4].png
o -tile 6x1
.
ImageMagick tiene una herramienta de línea de comandos llamada ' convertir ' para fusionar imágenes horizontalmente o para otro propósito. Probé este comando y funcionó perfectamente en su caso:
Para unir imágenes horizontalmente:
convert +append *.png out.png
Para apilar imágenes verticalmente:
convert -append *.png out.png
convert -append %F joined-image.png
. Todas las imágenes seleccionadas se unirán como un png en orden alfabético
convert *.png +append out.png
Cualquiera que use la MiniMagick
gema de rieles puede usar la herramienta incorporada para fusionar imágenes:
# Replace this with the path to the images you want to combine
images = [
"image1.jpg",
"image2.jpg"
]
processed_image = MiniMagick::Tool::Montage.new do |image|
image.geometry "x700+0+0"
image.tile "#{images.size}x1"
images.each {|i| image << i}
image << "output.jpg"
end
Consulte la documentación para conocer las #geometry
opciones para manejar el cambio de tamaño y la ubicación. El ejemplo actual cambiará el tamaño de las imágenes a una 700px
altura mientras se mantiene la relación de aspecto de la imagen. +0+0
colocará la imagen sin espacios entre ellos.