2010-05-17 14 views
43

Parece una pregunta razonablemente común, así que la voy a preguntar usando tantas palabras clave como me sea posible.Pegar imágenes de mosaicos utilizando el comando de montaje de imagemagick sin cambiar el tamaño

Tengo un montón de (bien, nueve) jpegs de mosaico, con nombres de archivo de mosaico estándar. Cada jpeg es 220x175 píxeles:

(top row) 
tile_1_0_0.jpg 
tile_1_1_0.jpg 
tile_1_2_0.jpg 
(middle row) 
tile_1_0_1.jpg 
tile_1_1_1.jpg 
tile_1_2_1.jpg 
(bottom row) 
tile_1_0_2.jpg 
tile_1_1_2.jpg 
tile_1_2_2.jpg 

¿Cómo puedo usar ImageMagick/montaje de 'pegamento' o unirse a todos juntos para hacer una sola imagen, coherente? No quiero cambiar el tamaño de ellos en absoluto, así que supongo que la imagen final debería ser de 660x525.

Eso sería un montaje sin enmarcar, sombrear, bordear, etc. - solo las nueve imágenes originales, pegadas juntas para hacer un solo jpeg.

sé que debe ser algo en este sentido, pero estoy luchando con conseguir el orden y dimensionamiento correcto:

montage +frame +shadow +label -tile 3x3 -geometry <options> *.jpg joined.jpg 
+0

También posiblemente relacionado: [eliminar el espacio de mosaico adicional de una imagen compuesta de montaje (ImageMagick)? - Unix y Linux] (http://unix.stackexchange.com/questions/4046/remove-extra-tilespace-from-a-montage-imagemagick-composite-image/63463#63463) – sdaau

Respuesta

35

que estaba buscando hacer algo similar y terminamos aquí (supongo que su " tantas palabras clave como sea posible "funcionó"). Esto es lo que se me ocurrió que funcionó para mí. (Geometría y baldosas ajustado para sus necesidades)

montage -border 0 -geometry 660x -tile 3x3 tile* final.jpg 

Los archivos se añaden a los azulejos horizontalmente, por lo que, para -tile 4x2, la disposición sería:

1 2 3 4 
5 6 7 8 

Los números siendo las posiciones relativas de la nombres de archivos en la lista de argumentos.

Por lo que yo puedo decir, tile* ampliará por orden alfabético, por lo que debe especificar los nombres de archivo de forma manual, o cambiar el nombre a continuación, por lo que van a clase apropiada, por ejemplo:

# top row 
tile_r0_c0.jpg 
tile_r0_c1.jpg 
tile_r0_c2.jpg 
# middle row 
tile_r1_c0.jpg 
tile_r1_c1.jpg 
tile_r1_c2.jpg 
# bottom row 
tile_r2_c0.jpg 
tile_r2_c1.jpg 
tile_r2_c2.jpg 
+0

Supuse que '660x' era el tamaño final (3 imágenes a 220px cada una). De leer [el ejemplo] (http://www.imagemagick.org/Usage/montage/#geometry_size), creo que la bandera '-geometry' cambia el tamaño de cada imagen a este tamaño (por lo tanto, usando' -geometry 220x' mantendría el tamaño original en este caso). ¿Eso parece correcto? – Hendy

23

solución de Dave no lo hizo trabajo para mí, así que encontré una mejor respuesta here. Prueba esto:

montage -mode concatenate -tile 3x3 tile*.jpg result.jpg 

también funciona sin el segundo "3"

montage -mode concatenate -tile 3x tile*.jpg result.jpg 

la línea completa para los usuarios de Windows es:

"C:\Program Files\ImageMagick-6.8.0-Q16\montage.exe" -mode concatenate -tile 3x tile*.jpg result.jpg 

(cambiar el "6.8.0-P16 "con su propia versión de ImageMagick, por supuesto)

+0

¡Funcionó perfectamente! – max

+0

He instalado ImageMagick en Windows pero no veo el archivo montage.exe –

+0

Asegúrese de marcar la opción del instalador de ImageMagick "Instalar utilidades heredadas (por ejemplo, convertir)". (probado con la versión 7.0.7) – user2704917

Cuestiones relacionadas