Sábado, 01 Septiembre 2018 02:10

Generar las teclas de un teclado en ImageMagick

Ahora que ya hemos visto cómo hacer imágenes con ImageMagick que contengan un texto, vamos a ver un nuevo parámetro, -frame, que genera marcos con sombreado simulando volúmenes.

Y, para verlo, vamos a hacer las teclas de un teclado, por ejemplo, para hacer tutoriales y superponer combinaciones de teclas o atajos de teclado.

#!/bin/bash
for i in {A..Z} TAB CTR MAY ALT
do
    convert -background "#d7d7d7" -fill Black -gravity Center -font DejaVu-Sans-Bold -pointsize 50 label:"$i" -frame 8x8+8+0 $i.png
done

Con {A..Z} indicamos que recorra todos los carácteres que van de la A a la Z, es decir, todas las mayúsculas, menos la Ñ, pero si lo que queremos es un teclado para mostrar combinaciones de teclas, con esto nos serviría.

El resto de instrucciones y parámetros los conocemos, excepto -frame 8x8+8+0

-frame indica que haga un marco con un grosor determinado en anchura y en altura, la primera parte del valor (8x8), con una profundidad en el ángulo inferior derecho (+8) y sin profundidad en el ángulo superior izquierdo (+0). Es importante que las cifras del segundo bloque sean distintas, si no, no crea efecto de relieve, si la primera es mayor; o de rehundimiento, en caso de que la segunda sea mayor que la primera. Y que ambos valores sean positivos, si no, no hace el efecto.

Como muestra del resultado, pongo alguna de las teclas generadas:

A.pngE.pngI.pngO.pngU.pngTAB.pngMAY.pngCTR.pngALT.png

 

Y si quisiéramos no un teclado para hacer tutoriales, sino los carácteres del español para escribir palabras (además, al nombrarlos como $i.png es fácil luego hacer los montajes):

#!/bin/bash
for i in {A..Z} Ñ Á É Í Ó Ú
do
    convert -background "#d7d7d7" -fill Black -gravity Center -font DejaVu-Sans-Bold -pointsize 50 label:"$i" -frame 8x8+8+0 $i.png
done

Y ya tenemos la Ñ y las mayúsculas con tilde.

Publicado en Multimedia
Jueves, 30 Agosto 2018 23:01

Crear lienzos con textos en ImageMagick

Vamos a ver cómo crear lienzos con textos en ImageMagick. Es decir, crear una imagen de la nada con un fondo y letras. Para escribir sobre una imagen existente está el parámetro -annotate, pero eso es materia de otro artículo.

Para crear estos lienzos con textos veremos los siguientes parámetros de convert:

-size: determina el tamaño de la imagen

-font: especifica la tipografía a utilizar

-pointsize: permite especificar el tamaño de la tipografía

label: (no lleva guión delante) indica la etiqueta que se escribirá en el lienzo, el texto a escribir

-gravity: localiza el punto de referencia sobre el que se posicionará el texto

-background: establece el color de fondo del lienzo

-fill: especifica el color principal con el que trabajaremos, en caso de los textos, el color de las letras

-interword-spacing: separación entre las palabras

-kerning: separación entre las letras

-interline-spacing: separación entre líneas

Para ver cómo funcionan cada uno de estos parámetros, veremos una serie de ejemplos que lo ilustren:

Texto por defecto en negro sobre blanco:

convert label:"Todo está en los libros" negrosobreblanco.jpg

 

negrosobreblanco.jpg

 

Si únicamente le indicamos el parámetro label, utiliza la tipografía y el tamaño por defecto, dependiendo de la versión y de las tipografías instaladas en el equipo.

Texto en negro sobre lienzo blanco de un tamaño específico

convert -size 300x100 label:"Todo está en los libros" negrosobreblanco2.jpg

negrosobreblanco2.jpg

Al indicarle el tamaño del lienzo con -size, convert ajustará el tamaño del texto para que ocupe todo el lienzo. Y, como podemos ver en la imagen, el punto de gravedad por defecto es NorthWest. Podemos especificar únicamente la anchura con $anchurax o únicamente la altura con x$altura.

Texto centrado negro sobre lienzo blanco de un tamaño específico

convert -size 300x100 -gravity Center label:"Todo está en los libros" negrosobreblanco3.jpg

negrosobreblanco3.jpg

 

Podemos especificar que el texto esté centrado con el parámetro -gravity Center.

Texto centrado negro sobre lienzo azul de un tamaño específico

convert -size 300x100 -background Blue -gravity Center label:"Linux Center" linuxcenter.jpg

Por defecto, convert escribe el texto en negro sobre fondo blanco, pero podemos cambiar el color del fondo con -background.

Texto centrado blanco sobre lienzo azul de un tamaño específico

convert -size 300x100 -background Blue -fill White -gravity Center label:"Linux Center" linuxcenter2.jpg

 

Al igual que podemos cambiar el color del lienzo, también podemos cambiar el color del texto. Lo especificaremos con -fill (que indica el color con el que trabajaremos en las siguientes operaciones, algo así como "color de frente", no sólo a la hora de escribir un texto, sino con muchos más modificadores).

Texto centrado blanco de un tamaño específico sobre lienzo azul de un tamaño específico

convert -size 300x100 -background Blue -fill White -gravity Center -pointsize 20 label:"Linux Center" linuxcenter3.jpg

linuxcenter3.jpg

El tamaño del texto lo indicamos con -pointsize

Texto centrado blanco de un tamaño específico sobre lienzo azul

convert -background Blue -fill White -gravity Center -pointsize 20 label:"Linux Center" linuxcenter4.jpg

linuxcenter4.jpg

Antes hemos visto que si indicamos el tamaño del lienzo pero no el tamaño de las letras, convert ajusta el tamaño de las letras para que se ajusten al tamaño del lienzo.

Del mismo modo, si indicamos el tamaño de las letras pero no indicamos el tamaño del lienzo, convert ajusta el tamaño del lienzo al texto.

 

Texto centrado blanco de una tipografía determinada con un tamaño específico sobre lienzo azul

convert -background Blue -fill White -gravity Center -font Unispace -pointsize 20 label:"Linux Center" linuxcenter5.jpg

linuxcenter4.jpg

Seleccionamos la tipografía con -font. Podemos ver todas las tipografías con convert -list font

Texto centrado blanco de una tipografía determinada con un tamaño y una separación entre letras específica sobre lienzo azul

convert -background Blue -fill White -gravity Center -font Unispace -pointsize 20 -kerning 5 label:"Linux Center" linuxcenter6.jpg

linuxcenter6.jpg

Con -kerning especificamos la separación entre las letras. Como vemos, si no especificamos el tamaño del lienzo, convert lo ajustará al texto con la separación que indiquemos.

Texto en dos líneas

convert -background Blue -fill White -gravity Center -font Unispace -pointsize 20 -kerning 5 label:"Linux \nCenter" linuxcenter7.jpg

linuxcenter7.jpg

Para separar las líneas, indicaremos el salto de línea con \n.

Texto en dos líneas indicando el espacio entre líneas

convert -background Blue -fill White -gravity Center -font Unispace -pointsize 20 -interline-spacing 10 -kerning 5 label:"Linux \nCenter" linuxcenter8.jpg

linuxcenter8.jpg

El tamaño entre líneas se especifica en ImageMagick con -interline-spacing

Indicar la separación entre palabras

convert -background Blue -fill White -gravity Center -font Unispace -pointsize 20 -interword-spacing 20 -kerning 5 label:"Linux Center" linuxcenter9.jpg

 

linuxcenter9.jpg

Podemos indicar, además de la separación entre las letras y entre las líneas, la separación entre las palabras. Lo indicamos con -interword-spacing

 

Básicamente estos son los parámetros para generar lienzos con texto en ImageMagick. Y me despido con un comando que aglutina todos estos parámetros:

convert -size 300x200 -background White -fill Blue -gravity Center -font FreeMono-Negrita -pointsize 30 -interword-spacing 10 -kerning 5 -interline-spacing 10 label:"Deseo que\nhaya sido\nde su interés" -bordercolor Black -border 10x10 despedida.jpg

Publicado en Multimedia

¡Atención! Este sitio usa cookies y tecnologías similares.

Si no cambia la configuración de su navegador, usted acepta su uso. Saber más

Acepto

Vea nuestra política de cookies y enlaces de interés aquí