Me gustaría combinar varias imágenes en una imagen usando ImageMagick. Para explicar un poco mejor, quiero que el resultado sea similar a esto:
Es decir, tengo varias capturas de pantalla, y quiero convertirlas en una imagen con las imágenes originales una encima de la otra.
Al buscar en Google, me he encontrado con el comando 'compuesto', pero no sé si, y en ese caso, cómo usarlo para obtener el resultado que quiero.
imagemagick
image-processing
Petter
fuente
fuente
Respuestas:
Para cualquier cantidad de archivos de entrada nombrados :
in-<something>.jpg
Para agregar archivos específicos u omitir números en lugar de obtener el "glob" completo, puede mencionar los archivos de entrada explícitamente y colocar el
append
comando después.Puede usar
-append
(en lugar de+append
) para pegar verticalmente.O:
también creará un archivo
out.jpg
que contiene una concatenación vertical de las imágenes de origen.convert
Para una concatenación simple en una sola fila o columna, la
append
opción de laconvert
herramienta es suficiente. Tenga en cuenta que-append
concatena todas las imágenes verticalmente, creando una columna con n filas, y+append
concatena horizontalmente, creando una fila con n columnas.(Consulte ImageMagick: Opciones de línea de comandos ).
montage
Para obtener un control más preciso sobre el diseño, necesitaríamos la
montage
herramienta.montage -mode concatenate
pegará las imágenes de entrada juntas como laappend
opción y-tile 1x
controlará el diseño que se aplicará.tile
sigue las columnas de formato × filas , pero puede faltar cualquiera de los lados ymontage
descubrirá cómo cumplir con las restricciones.Estamos usando
1x
(exactamente una columna con cualquier número de filas) aquí para obtener el mismo efecto que-append
. Sin-tile 1x
, se uniría a las imágenes como+append
, por defecto-tile x1
(cualquier número de columnas en una fila).(Consulte los ejemplos de ImageMagick: montaje, matrices de imágenes ).
fuente
convert -append `counter=0; for x in in-*; do if [[ $(($counter % 2)) == 0 ]]; then echo $x; fi; counter=$((counter + 1)); done` out.jpg
debería hacer el trabajo.convert -tile 2x2
comando etc. leerá los archivos alfabéticamente . Esto significa que los fragmentos nombrados0-10
se leerán como0,10,1,2,..,9
. Me llevó casi 2 horas darme cuenta de algo tan básico.ls *
, devolverá esos valores en ese orden.