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:
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
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 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
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
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
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
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
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
Pingback: Crear un vídeo a partir de una imagen con ffmpeg – Linux en Español