Crear un lienzo con texto con ImageMagick

Para crear un fichero de imagen con un texto, debemos usar el comando label: seguido del texto a escribir. Si el texto es únicamente una palabra, podemos no entrecomillarla, pero si hay más de una palabra, deberemos entrecomillarlas para evitar que lo entienda como parámetros distintos. Por último, escribiremos el nombre del fichero que queramos generar:

convert label:"Linux en español" letrero.jpg

Nos genera un fichero con el color de fondo por defecto, que es el blanco, el color de las letras por defecto, que es el negro, el tamaño de letra por defecto y el tamaño de de la imagen ajustado a las letras:

convert label:"Linux en español" letrero.jpg

Como en casi ninguna ocasión vamos a querer un fichero de imagen así, tenemos que empezar a indicarle más parámetros. Los parámetros a utilizar son los siguientes, aunque no es necesario especificar todos:

  • -size -> Indica que el siguiente parámetro es el tamaño de la imagen
  • tamaño -> Expresado en formato anchoXalto, por ejemplo, para crear un lienzo de 400 píxeles de anchura por 200 píxeles de altura, escribiremos 400×200
  • -font -> Indica que el siguiente parámetro es la tipografía a utilizar
  • tipografía -> El nombre de la tipografía. Si no sabemos el nombre exacto de la tipografía que queremos usar, o queremos ver todas las opciones, podemos listar las tipografías que puede usar ImageMagick con convert -list font
  • -pointsize -> permite especificar el tamaño de la tipografía
  • tamaño -> un valor numérico, como 20, 30…
  • label: (sin guión y acabado en dos puntos) indica la etiqueta que se escribirá en el lienzo
  • texto -> el texto a escribir. Si es una única palabra, no necesita comillas, pero si el texto tiene algún espacio en blanco, deberá ir entrecomillado.
  • -gravity -> Indica que el siguiente parámetro es el punto de referencia sobre el que se posicionará el texto
  • punto de gravedad -> indicado con los puntos cardinales en inglés. Se pueden listar los puntos de gravedad con convert -list font
  • -background -> Indica que el siguiente parámetro es el color de fondo del lienzo.
  • color -> color de fondo. Para listar los colores de ImageMagick usaremos convert -list font | convert -list color | cut -d " " -f 1
  • -fill: Indica que el siguiente parámetro es el color de las letras.
  • color -> color de las letras.
  • -interword-spacing: Indica que el siguiente parámetro es la separación entre las palabras
  • separación -> un valor numérico, como 1, 2, 3…
  • -kerning: Indica que el siguiente parámetro es la separación entre las letras
  • separación -> un valor numérico, como 1, 2, 3…
  • -interline-spacing: Indica que el siguiente parámetro es la separación entre líneas
  • separación -> un valor numérico, como 1, 2, 3…

 

Especificando sólo el tamaño del lienzo

convert -size 400x200 label:"Linux en español" solo_size.jpg

convert -size 400x200 label:"Linux en español" solo_size.jpg

Ajusta arriba y si el texto no cabe en la imagen, lo corta. Como vemos, no es una buena opción.

A partir de ahora, aunque me centre en otros valores, voy a indicar un color de fondo con el fin de que se vea mejor sobre el fondo blanco de la página.

Especificando tamaño del lienzo y tipografía

convert -size 400x200 -background NavajoWhite -font Metal-Lord label:"Linux en español" size_font_Metal-Lord.jpg

convert -size 400x200 -background NavajoWhite -font Metal-Lord label:"Linux en español" size_font_Metal-Lord.jpg

convert -size 400x200 -background NavajoWhite  -font BaskervaldADFStd label:"Linux en español" size_font_BaskervaldADFStd.jpg

convert -size 400x200 -background NavajoWhite -font BaskervaldADFStd label:"Linux en español" size_font_BaskervaldADFStd.jpg

 

Si queremos centrar el texto en la imagen, podemos usar -gravity Center:

convert -size 400x200 -background NavajoWhite -gravity Center -font Tlwg-Typist label:"Linux en español" size_gravity_font_Tlwg-Typist.jpg

convert -size 400x200 -background NavajoWhite -gravity Center -font Tlwg-Typist label:"Linux en español" size_gravity_font_Tlwg-Typist.jpg

 

Especificando el tamaño y una tipografía, al no especificar el tamaño de las letras, ajusta automáticamente su tamaño al lienzo.

Igual que si lo hacemos al revés.

Especificando tipografía y tamaño de la tipografía

convert -background NavajoWhite -font Vigilance-BRK -pointsize 80 label:"Linux en español" font_pointsize_80_Vigilance-BRK.jpg

convert -background NavajoWhite -font Vigilance-BRK -pointsize 80 label:"Linux en español" font_pointsize_80_Vigilance-BRK.jpg

Aquí vemos que indicando el tamaño de la tipografía pero no el del lienzo, ajusta el tamaño de la imagen al texto. Como muchas veces queda demasiado ajustado, podemos añadirle un border del mismo color para que deje un poco más de aire. Y como donde más ajusta el tamaño es en la anchura, podemos usar dos valores distintos (anchuraXaltura), siendo mayor el primero:

convert -background NavajoWhite -font Vigilance-BRK -pointsize 80 label:"Linux en español" -bordercolor NavajoWhite -border 20x5 font_pointsize_80_Vigilance-BRK_border.jpg

convert -background NavajoWhite -font Vigilance-BRK -pointsize 80 label:"Linux en español" -bordercolor NavajoWhite -border 20x5 font_pointsize_80_Vigilance-BRK_border.jpg

 

Especificando interword-spacing, kerning e interline-spacing

Vamos a partir de una imagen sin especificar ningún tipo de separación entre letras, palabras o líneas:

convert -size 400x200 -background NavajoWhite -gravity Center -font LMRoman9-Regular label:"Linux en español\nLinux en español\nLinux en español" size_gravity_font_LMRoman9-Regular.jpg

Y ahora vamos a ver cómo opera -interword-spacing con un valor de 40, para que se vea claro cómo separa las palabras:

convert -size 400x200 -background NavajoWhite -gravity Center -font LMRoman9-Regular -interword-spacing 40 label:"Linux en español\nLinux en español\nLinux en español" size_gravity_font_LMRoman9-Regular_interword_spacing.jpg

 

convert -size 400x200 -background NavajoWhite -gravity Center -font LMRoman9-Regular -interword-spacing 40 label:"Linux en español\nLinux en español\nLinux en español" size_gravity_font_LMRoman9-Regular_interword_spacing.jpg

Separando las letras con -kerning 10:

convert -size 400x200 -background NavajoWhite -gravity Center -font LMRoman9-Regular -kerning 10 label:"Linux en español\nLinux en español\nLinux en español" size_gravity_font_LMRoman9-Regular_kerning.jpg

convert -size 400x200 -background NavajoWhite -gravity Center -font LMRoman9-Regular -kerning 10 label:"Linux en español\nLinux en español\nLinux en español" size_gravity_font_LMRoman9-Regular_kerning.jpg

 

Y, por último, la separación de líneas con -interline-spacing 20:

convert -size 400x200 -background NavajoWhite -gravity Center -font LMRoman9-Regular -interline-spacing 20 label:"Linux en español\nLinux en español\nLinux en español" size_gravity_font_LMRoman9-Regular_interline_spacing.jpg

convert -size 400x200 -background NavajoWhite -gravity Center -font LMRoman9-Regular -interline-spacing 20 label:"Linux en español\nLinux en español\nLinux en español" size_gravity_font_LMRoman9-Regular_interline_spacing.jpg

Un comentario en «Crear un lienzo con texto con ImageMagick»

Deja una respuesta

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