Crear un lienzo con franjas horizontales o verticales

Para crear un lienzo con franjas horizontales o verticales en una única instrucción, lo que tenemos que hacer es generar individualmente cada una de las franjas y luego unirlas horizontalmente con +append o verticalmente con -append.

Veamos las dos partes de la instrucción a utilizar:

  • Crear lienzos
  • Unir los lienzos

Para crear un lienzo de un color uniforme tenemos que unir dos operadores:

  • -size para determinar el tamaño del lienzo a crear
  • xc: para indicar el color del lienzo

Y para unirlos, usaremos append que, en función del signo que lleve delante, unirá horizontal o verticalmente:

  • -append une verticalmente
  • +append une horizontalmente

A modo de truco y como el uso de los signos + y – con append me parece totalmente contraintuitivo, comento el nemotécnico que uso para recordar el uso de append:

El guión es una línea horizontal, la cruz es como un guión, pero con una línea vertical, y el logo de ImageMagick es un mago.

El mago le da la vuelta del revés a la lógica para crear sus juegos de ilusionismo, así que -append une verticalmente y +append une horizontalmente.

Franjas unidas verticalmente

convert -size 400x200 xc:salmon -size 400x200 xc:sienna -append lienzovertical.jpg

Genera:

convert -size 400x200 xc:salmon -size 400x200 xc:sienna -append lienzovertical.jpg

 

Franjas unidas horizontalmente

Podemos unir franjas horizontalmente con:

convert -size 200x400 xc:moccasin -size 200x400 xc:navy +append lienzohorizontal.jpg

convert -size 200x400 xc:moccasin -size 200x400 xc:navy +append lienzohorizontal.jpg

Franjas de distintos tamaños

Si unimos franjas de distinto tamaño, ImageMagick rellena con el color por defecto los huecos libres:

convert -size 200x400 xc:moccasin -size 200x200 xc:navy +append irregular.jpg

convert -size 200x400 xc:moccasin -size 200x200 xc:navy +append irregular.jpg

Pero podemos elegir la posición del lienzo a unir respecto al lienzo global con -gravity:

convert -size 200x400 xc:moccasin -size 200x200 xc:navy -gravity Center +append irregular_center.jpg

Unir más de dos franjas

Con append podemos unir tantas franjas como queramos, simplemente tenemos que crearlas antes de usar append:

convert -size 200x445 xc:salmon -size 200x445 xc:moccasin -size 200x445 xc:navy -size 200x445 xc:sienna +append cuatro_franjas.jpg

convert -size 200x445 xc:salmon -size 200x445 xc:moccasin -size 200x445 xc:navy -size 200x445 xc:sienna +append cuatro_franjas.jpg

Y cuando unimos varias franjas también podemos usar -gravity. En este caso vamos a hacer la franja navy más pequeña y alineada abajo:

convert -size 200x445 xc:salmon -size 200x445 xc:moccasin -gravity south -size 200x200 xc:navy -size 200x445 xc:sienna +append cuatro_franjas_south.jpg

convert -size 200x445 xc:salmon -size 200x445 xc:moccasin -gravity south -size 200x200 xc:navy -size 200x445 xc:sienna +append cuatro_franjas_south.jpg

Incluso podemos alinear con distintos puntos de gravedad. Para ello, lo que tendremos que hacer es añadir con append cada vez que cambiemos de punto de gravedad:

convert -size 200x445 xc:salmon -size 200x200 xc:moccasin -gravity south +append -size 200x200 xc:navy -gravity north -size 200x445 xc:sienna +append cuatro_franjas_north_south.jpg

convert -size 200x445 xc:salmon -size 200x200 xc:moccasin -gravity south +append -size 200x200 xc:navy -gravity north -size 200x445 xc:sienna +append cuatro_franjas_north_south.jpg

Unir horizontal y verticalmente

Igual que podemos unir con append distintos lienzos con distintos puntos de gravedad, podemos unir unos lienzos horizontalmente y otros verticalmente:

convert -size 200x200 xc:salmon -size 200x200 xc:moccasin +append -size 400x200 xc:sienna -append tres_lienzos.jpg

convert -size 200x200 xc:salmon -size 200x200 xc:moccasin +append -size 400x200 xc:sienna -append tres_lienzos.jpg

2 comentarios en «Crear un lienzo con franjas horizontales o verticales»

Deja una respuesta

Tu dirección de correo electrónico no será publicada.