Estoy buscando la manera más eficiente de unir múltiples imágenes juntas en ImageMagick, sobre una imagen de fondo, de manera que el espaciado/relleno entre las imágenes superpuestas sea ¿consistente?Combinación de varias imágenes en ImageMagick con desplazamientos relativos (no absolutos)
He investigado el uso de + append, convert -composite y convertir con -page y -layers merge.
El siguiente comando (convertir -compuesto) funciona, pero requiere un cálculo previo de las dimensiones de la imagen para especificar las compensaciones absolutas. Realmente, quiero un espacio de 10 píxeles entre el final de la PRIMERA imagen en capas y el inicio de la segunda imagen en capas, pero la única manera que puedo ver para lograr eso es especificando el desplazamiento absoluto desde la esquina superior izquierda del lienzo .
convert \
background.jpg \
first.jpg -gravity Northwest -geometry +10+10 -composite \
second.jpg -geometry +300+10 -composite \
third.jpg -geometry +590+10 -composite \
output.jpg
Busco a algún tipo de operador, de modo que la distancia al eje horizontal puede interpretarse en relación con el "último" imagen de la estratificación, por lo que en lugar de especificar +300+10
para la segunda imagen y +590+10
para el tercero, me de alguna manera puede especificar un desplazamiento +10+10
.
Pensé que la gravedad me permitiría lograr eso (-gravity Northwest
), de la misma manera que float: left;
funciona en el posicionamiento CSS, pero ese no es el caso.
I también han tenido cierto éxito con lo siguiente:
convert \
-page +10+10 first.jpg \
-page +300+10 second.jpg \
-page +590+10 third.jpg \
-background transparent \
-layers merge \
layered.png
convert background.jpg layered.png -gravity Center -composite output.jpg
Tanto las técnicas descritas requieren pre-cálculo de las compensaciones absolutos, que es un poco de dolor. ¿Hay una mejor manera de hacer esto?
¿Todas las imágenes de entrada para el mismo proceso de costura tienen el mismo ancho y alto (y solo pueden cambiar para la siguiente costura)? –
El fondo es una imagen real, pero sus dimensiones serán estáticas (o al menos será una especie de imagen fácilmente incrustada/cultivable). –
Las imágenes no tienen todas las mismas dimensiones. Los limitaremos a una altura máxima y un ancho máximo (por determinar), por lo que dependiendo de las dimensiones de la imagen de entrada, esta restricción dará como resultado anchos variables. –