Bordes con relieve con ImageMagick

El operador -raise de ImageMagick genera un borde a una imagen ya cread con una parte más clara y otra más oscura simulando relieve.

Si antes de raise escribimos un guión, realza la imagen con las partes superior e izquierda más claras y las partes derecha e inferior más oscuras. Si le añadimos un signo más delante de raise, invierte la transformación generando un efecto rehundido.

Partiendo de esta fotografía:

Vamos a aplicarle -raise con un valor de 10:

convert grafiti.jpg -raise 10 grafiti_-_raise_10.jpg 

 

convert grafiti.jpg -raise 10 grafiti_-_raise_10.jpg

Cuanto mayor sea el valor de raise, mayor será el grosor del marco. Veamos con un valor de 50:

convert grafiti.jpg -raise 50 grafiti_-_raise_50.jpg

convert grafiti.jpg -raise 50 grafiti_-_raise_50.jpg
Vamos a ver cómo cambia si en lugar de -raise usamos +raise:

convert grafiti.jpg +raise 50 grafiti_+_raise_50.jpg 

convert grafiti.jpg +raise 50 grafiti_+_raise_50.jpg

Podemos combinarlo con -border para añadir un borde y luego darle relieve:

convert grafiti.jpg -bordercolor SkyBlue -border 20 -raise 20 grafiti_-border_20_-_raise_20.jpg

convert grafiti.jpg -bordercolor SkyBlue -border 20 -raise 20 grafiti_-border_20_-_raise_20.jpg

Efecto teclas

Con este efecto de relieve podemos crear imágenes que simulen teclas. Vamos a ir paso a paso y así podemos ver más opciones de ImageMagick.

Crearemos primero un lienzo de 100 x 100 de color Grey80:

convert -size 100x100 xc:Gray80 lienzo.jpg

convert -size 100x100 xc:Gray80 lienzo.jpg
Podemos listar los colores de ImageMagick con convert -list color.

Como queremos crear una tecla, vamos a crear un lienzo con un texto, en este caso, con la letra «A», dejando un poco de aire para hacer luego el biselado:

convert -size 100x100 -background Gray80 -gravity South -pointsize 80 label:"A" letra_A.jpg

convert -size 100x100 -background Gray80 -gravity South -pointsize 80 label:"A" letra_A.jpg

Ahora que ya tenemos la letra, podemos aplicar el biselado:

convert -size 100x100 -background Gray80 -gravity South -pointsize 80 label:"A" -raise 15 tecla_A.jpg

convert -size 100x100 -background Gray80 -gravity South -pointsize 80 label:"A" -raise 15 tecla_A.jpg

Para darle un efecto más real de tecla, podemos difuminar la imagen ligeramente:

convert -size 100x100 -background Gray80 -raise 15 -blur 2 -gravity South -pointsize 80 label:"A" tecla_usada_A.jpg

convert -size 100x100 -background Gray80 -raise 15 -blur 2 -gravity South -pointsize 80 label:"A" tecla_usada_A.jpg

Ahora que ya tenemos el diseño de las teclas, podemos recorrer carácter a carácter una cadena y generar una imagen con esa cadena con efecto teclas:

#!/bin/bash

let len="${#1}"-1
start_inst="convert" 
text=""
filename="${1// /}".jpg
montage=""
let width=100
let height=100
let sizeborder=5
let sizeraise=$sizeborder*3
let sizeblur=2
color="Gray80"
if [ -w "/tmp" ]
then 
    [ -d "/tmp/${1// /}" ] || mkdir "/tmp/${1// /}"
    dirtmp="/tmp/${1// /}"
else
    [ -d "./${1// /}" ] || mkdir "./${1// /}"
    dirtmp="./${1// /}"
fi

for (( pos=0; pos<=$len; pos++ ))
do

    if [ "${1:$pos:1}" == " " ]
    then
        let width_space=$width*3
        convert -size ${width_space}x${height} xc:$color -raise $sizeraise -blur $sizeblur -bordercolor $color -border $sizeborder $dirtmp"/"$pos.jpg
# gjpqy
    
    elif [ "${1:$pos:1}" == "g" ] || [ "${1:$pos:1}" == "j" ] || [ "${1:$pos:1}" == "p" ] || [ "${1:$pos:1}" == "q" ] || [ "${1:$pos:1}" == "y" ]
    then
        convert -size ${width}x${height} -background $color -raise $sizeraise -blur $sizeblur -gravity Center -pointsize 80 label:${1:$pos:1} -bordercolor $color -border $sizeborder $dirtmp"/"$pos.jpg
    else
        convert -size ${width}x${height} -background $color -raise $sizeraise -blur $sizeblur -gravity South -pointsize 80 label:${1:$pos:1} -bordercolor $color -border $sizeborder $dirtmp"/"$pos.jpg
    fi
    montage=$montage"$dirtmp/$pos.jpg "
done
convert $montage +append $filename
rm -r $dirtmp
exit 0

 

Deja una respuesta

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