El truco anterior y la salida del comando “cal” que muestra el calendario del año especificado:
$ cal 2010
Me ha permitido jugar con la composición de imágenes generadas y he creado un script que a partir de una imágen te superpone un calendario encima de la misma. El script tiene algunos valores que puedes modificar para generar calendarios diferentes (tamaño de la fuente de texto, dimensiones de la imágen a generar, color del fondo, nivel de transparencia). Pero si no se cambia ningún valor, se crea un calendario por defecto como el de la primera imágen.
Nota: require de imagemagick instalado. Y darle permisos de ejecución (chmod +x ./calendario.sh)
Para usarlo: Ejecuta ./calendario.sh "nombre_de_la_imagen_a_usar"
Por ejemplo:
./calendario.sh "gato.png"
#!/bin/bash
#===========================================
# calendario.sh
# Crea un calendario a partir de una imagen
#===========================================
IMAGEN=$1
if [ -z $IMAGEN ];
then
echo "Debes indicar una imagen para crear el calendario"
exit;
fi;
# Edita estos valores, como desees:
# Fuente a utilizar, ojo no todas estan soportadas por imagemagick, usa por ejemplo Courier
#FUENTE="/usr/share/fonts/truetype/ttf-droid/DroidSans.ttf"
FUENTE="Courier"
# Tamaño de la fuente
SIZE=14
#Color de fondo (por lo general es black)
COLOR=gray
# % de Opacidad, transparencia
OPACIDAD=55
# Dimensiones del calendario
DIMENSIONS=600x600
BOLD=0
# Crear el calendario
# Creamos las imagenes del calendario 2010 (1 con transparencia y otra con fondo oscuro)
cal -h 2010 | convert -background transparent -fill white -font $FUENTE -pointsize 12 -strokewidth $BOLD -stroke white -gravity center label:@- calendario2010t.png
cal -h 2010 | convert -background $COLOR -fill black -font $FUENTE -pointsize 12 -strokewidth $BOLD -stroke white -gravity center label:@- calendario2010.png
# Redimensionamos la imagen original
cp $IMAGEN input.png
# Y le aplicamos el primer calendario con cierto grado de opacidad
convert input.png -resize ${DIMENSIONS}! miff:- | composite -dissolve $OPACIDAD% -gravity center calendario2010.png - micalendario.png
# a la composicion resultante le aplicamos ya el otro calendario sin trasnparencias
composite -gravity center calendario2010t.png micalendario.png micalendario.png
# Borramos lo sobrante
rm calendario2010t.png
rm calendario2010.png
rm input.png
exit;
# Si quisieramos crear la marca de agua seria parecido a esto:
#echo "(c) 2010 Ubuntu Life" | convert -background transparent -fill white -pointsize 24 label:@- watermark.png
#convert input.jpg -resize 500x500 miff:- | composite -watermark 30% -gravity center watermark.png - output.png
#convert input.jpg -resize 500x500 miff:- | composite -dissolve 40% -gravity center watermark.png - output.png







2:23 de la mañana y…..
… Durmiendo!!! en 3,2…
Aquí un lector vía RSS (hay que comentar de vez en cuando no?)
excelente script. Aprendí varias cosas que me servirán para un par de proyectos pendientes que tengo por ahí…
Saludos de Chile!
Me ha gustado!
Con las legañas se te ha pasado usar la variable SIZE
Me ha gustado mucho.
Yo he hecho una pequeña modificación. Es una chorrada, pero lo pongo por si le sirve a alguien:
Para que te ponga el año en curso automáticamente se puede añadir una variable así
export year=`date | cut -f6 -d” “`
y luego poner $year donde ponga 2010
Como te digo, me ha gustado mucho.
Muchas gracias
Por cierto, has visto que algunas lineas están desplazadas?
Eso es porque no todas las lineas son de igual longitud. No hay espacios en blanco después del último carácter en las líneas más cortas.
Genial muy bueno O:
¡Muchas gracias por compartir! Me ha gustado mucho.
ajajja, siempre inventando cosas interesante, ya me gustaría tener tiempo para hacer cositas así.
como siempre, se agradece mucho que compartas tus conocimientos.
Gracias por compartir, lo probare después
Buenas
Me ha sido muy util y como le he añadido algunas cosillas pego aqui mi version del script.
#!/bin/bash
#===========================================
# calendario.sh
# Crea un calendario a partir de una imagen
#===========================================
export LC_TIME=es_ES.utf8
IMAGE=$1
WALLPAPER=wallpaper.png
if [ -z $IMAGE ];
then
echo “Debes indicar una imagen para crear el calendario”
exit;
fi;
# Edita estos valores, como desees:
FUENTE=”DroidSansMono.ttf”
SIZE=10
FONTCOLOR=white
BOLD=0
#Color de fondo (por lo general es black)
COLOR=black
OPACITY=30
# Dimensiones del calendario
DIMENSIONS=1024×768
POSITION=”+615+285″
# Crear el calendario
# Creamos las imagenes del calendario (1 con transparencia y otra con fondo oscuro) y les ponemos sombra
cal 2010 | convert -background $COLOR -fill $FONTCOLOR -font $FUENTE -pointsize $SIZE -strokewidth $BOLD label:@- cal$IMAGE
convert cal$IMAGE \( +clone -background black -shadow $((60*5+0+5)) \) +swap -background none -layers merge +repage cals$IMAGE
cal 2010 | convert -background transparent -fill $FONTCOLOR -font $FUENTE -pointsize $SIZE -strokewidth $BOLD label:@- calt$IMAGE
convert calt$IMAGE \( +clone -background black -shadow $((60*5+0+5)) \) +swap -background none -layers merge +repage calts$IMAGE
# Redimensionamos la imagen original
cp $IMAGE input.png
# Y le aplicamos el primer calendario con cierto grado de opacidad
convert input.png -resize ${DIMENSIONS}! miff:- | composite -dissolve $OPACITY% -geometry $POSITION cals$IMAGE – $WALLPAPER
# a la composicion resultante le aplicamos ya el otro calendario sin trasnparencias
composite -geometry $POSITION calts$IMAGE $WALLPAPER $WALLPAPER
# Borramos lo sobrante
rm cal*.png
rm input.png
exit;