Tengo un montón de fotos. Todos tienen la misma altura, y estoy tratando de juntarlos en una imagen compuesta usando el programa de montaje de ImageMagick a través de Bash. El problema es que, por defecto, el tamaño del mosaico (una imagen ocupa un mosaico) es igual a la imagen con las dimensiones más grandes. Las imágenes estrechas, por lo tanto, están rodeadas de mucho espacio en blanco. Quiero eliminar este espacio en blanco. ¿Cómo puedo hacerlo?
bash
imagemagick
image-manipulation
Gilles 'SO- deja de ser malvado'
fuente
fuente
Respuestas:
Intenta algo como esto:
Esto hará que el borde entre las imágenes sea lo más pequeño posible y lo que sea que haya allí será transparente.
Para ver una demostración de la diferencia usando imágenes integradas, pruebe estas y compare:
Ver uso de montaje .
Si publica un ejemplo de lo que está obteniendo y edita manualmente un ejemplo de lo que le gustaría como resultado, es posible que podamos acercarnos un poco más a eso.
Aquí hay ejemplos que me gustan más que los que originalmente publiqué anteriormente:
fuente
Estoy de acuerdo con la respuesta aceptada de
-geometry +0+0
eliminar espacio de mosaico adicional, y agregaría-mode Concatenate
(bajo ciertas condiciones).Además, una vez que tenga diferentes tamaños
montage
, se hace un poco difícil discernir entre lo que es "fondo de mosaico" (espacio de mosaico) frente a "marco" y "borde". imágenes (seleccionables):Bueno, espero que esto pueda ser útil,
¡salud!
EDITAR: armé una pequeña GUI de Python / Tkinter / PIL para ImageMagick, tkGui_ImageMagick.py , y finalmente pude encontrar la línea de comando adecuada para algo que quería: hacer un montaje de cuatro imágenes, donde la altura y el ancho de los mosaicos coinciden con el ancho más grande de esa columna (o la altura de la fila).
En este ejemplo, img1 (200x100) e img2 (300x200) van en la primera columna, el ancho más grande es 300, lo que debería establecer el ancho del mosaico de img1. Además, img1 necesita tener su altura correlacionada con la altura más grande de img3 (300 px), con la que forma una fila. Esto se puede especificar a través del
extent
operador (consulte también ImageMagick • Ver tema: cambiar el tamaño y rellenar en lugar de estirar ). Y esa línea de comando requiere llamadas de subproceso para separarmontage
s para cada columna, y desde allí,convert
s separados para cada imagen:Tenga en cuenta aquí, si hubiéramos usado
-extents
directamente en la línea de montaje, así:... notaremos que la primera especificación para la altura (200) será ignorada, ¡y 400 de mayor tamaño se aplicará a ambas fichas de todos modos !
Por lo tanto tenemos que controlar el relleno de cada imagen individual (llamando
convert
conextents
para cada uno ) - y luego evitarextents
en lamontage
línea; y como tal, debemos saber a priori el ancho (más grande) de cada columna (y la altura de cada fila). Tenga en cuenta también:convert
)montage
, generalmente-gravity
tiene que venir después (completamente especificado: w & h)-extent
; enconvert
,-gravity
funciona antes-extent
(generalmente)fuente
No con
montage
, pero se siente más preciso con lo siguiente:x500
siendo la altura final deseadafuente