Crear un calendario a partir de una imágen

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

11 Respuestas a “Crear un calendario a partir de una imágen”


  1. 1 superpiwi septiembre 21, 2010 a las 12:24 am

    2:23 de la mañana y…..
    … Durmiendo!!! en 3,2…

  2. 2 Abel septiembre 21, 2010 a las 1:21 am

    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!

  3. 3 soymicmic septiembre 21, 2010 a las 4:39 am

    Me ha gustado!

    Con las legañas se te ha pasado usar la variable SIZE

  4. 4 t.a.c. septiembre 21, 2010 a las 11:14 am

    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

  5. 5 t.a.c. septiembre 21, 2010 a las 11:35 am

    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.

  6. 7 José L. Castillo septiembre 21, 2010 a las 1:10 pm

    ¡Muchas gracias por compartir! Me ha gustado mucho. :)

  7. 8 Wagner septiembre 21, 2010 a las 1:31 pm

    ajajja, siempre inventando cosas interesante, ya me gustaría tener tiempo para hacer cositas así.

    como siempre, se agradece mucho que compartas tus conocimientos.

  8. 9 chuche septiembre 21, 2010 a las 3:52 pm

    Gracias por compartir, lo probare después :D

  9. 10 demi septiembre 26, 2010 a las 2:38 am

    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;


  1. 1 Crear un calendario a partir de una imágen | Ayuda Linux Trackback en septiembre 21, 2010 a las 1:25 am

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s





The next version of Ubuntu is coming soon




¿Es compatible tu equipo con Ubuntu?


( Muchos fondos de pantalla, aqui )

DESCARGATE SCIFI LIFE

365 Dias de Soledad
Me debes los sueños, las promesas y las noches rotas. Me debes la paz, la sonrisa y la esperanza robadas. Me debes la sangre, las lágrimas y el sudor vertido. Me debes las noches vacías, los abrazos anhelados. Me debes un beso de ajenjo de tu amarga boca.

The Ubuntu Counter Project - user number # 11961
Geo Visitors Map

 

septiembre 2010
L M X J V S D
« ago   oct »
 12345
6789101112
13141516171819
20212223242526
27282930  

Blog Stats

  • 21,382,821 hits

Seguir

Get every new post delivered to your Inbox.

Únete a otros 675 seguidores