11 February 2006

Nouvelle entête plus réaliste!

Je ne sais pas pourquoi j’y ai pas pensé plus tôt, pourquoi ne pas avoir une vue plus réaliste de la planète terre en entête! Et tant qu’à ajouter des nuages, pourquoi ne pas avoir une mise à jour des nuages en temps réel (aux 3h)? et pourquoi pas voir le déplacement du soleil (le jour et la nuit)? Alors si vous visitez souvent mon site web, à différentes heures du jour, sachez que l’entête est toujours unique: la planète terre que vous y voyez est la plus réaliste possible! Voyez comment je procède.

Logiciels nécessaires
Notez que faire ça sous Windows, sans aucun logiciel à code source ouvert est totalement impossible. Je met même quiconque au défi de le faire dans Windows!

  • Xplanet, un générateur de planète Terre;
  • Imagemagick, outils de manipulations d’image pour la console;
  • Standard FTP client, le client FTP scriptable fournit avec toutes les distributions de Linux;
  • Bash, shell pour le scriptage;
  • Cron, un planificateur de tâches (fournit avec Linux).

Décomposition de l’image
L’entête est essentiellement composée de 2 images, le fond qui comporte le faux fond blanc, le fond noir avec les étoiles et le logo. Ensuite il y a la planète qui dépasse du noir sans jamais dépassé sur le blanc à droite.

J’ai donc créé avec The Gimp une image de fond sans la planète. l’image ressemble à cela (où le rayé est transparent):

Création de la planète
Xplanet est un outil à code source ouvert qui a d’abord été créé pour générer des fonds d’écran dynamiques pour Linux. Ainsi, l’utilisateur pouvais avoir une vue de l’univers sur son bureau qui considérait plusieurs paramètres calculs en fonction du temps. Ici, je l’utilise pour générer une image PNG de la Terre que je pourrai plus tard modifier avec Imagemagick. Les nuages proviennent du site de Xplanet. L’image est régénérée à tous les 3 heures, alors rien ne sert que je mette à jour mon entête plus fréquement!

xplanet -config xplanet.config -radius 50 -geometry 550x550 -longitude -63 -latitude 10 -transpng xplanet.png -num_times 1

Essentiellement, je demande à xplanet de créer une image de 550×550 pixels, avec la Terre au centre dont l’observateur est au dessus du point (-63, 10) à un radius du 50. Le fichier de configuration est à la fin de cet article. Cette commande produit l’image suivante (voir le fichier de configuration à la fin):

Assemblage final
C’est ici que le fun commence. J’ai eu de la difficulté avec le crop de Imagemagick. L’image était toujours déformée, jusqu’à ce que j’utilise les parenthèse pour stipuler que les traitements se font en retrait sur une image séparée.

convert -quality 100 bg.png \( xplanet.png -crop 398x400+0+0 +repage \) -geometry +358+13 -composite header.png

Ici, je joint le fichier bg.png à celui généré par xplanet mais avant je le rogne (français pour crop) et je déplace l’image pour la positionner à l’endroit désiré. Le mot clef +repage force convert à ne pas étirer l’image de 398×440 sur les 550×550 comme le comportement par défaut le stipule. Le résultat est ce que vous voyez en haut de cette page!

Exécution automatique
Comme je veux que tout cela se fasse tout seul, j’ai créé un script bash à être exécuté à tous les 3 heures par cron pour mettre à jour l’image et la téléverser vers le serveur Web.

#!/bin/bash
#batch.sh Permet de generer l'entete de squidy.info
rm clouds_2048.jpg
wget http://xplanet.fortha.org/clouds_2048.jpg
xplanet  -config xplanet.config -radius $RADIUS -geometry $GEOMETRIE \ -longitude $LONGITUDE -latitude $LATITUDE -transpng xplanet.png -num_times 1
#Compose les images
convert -quality 100 -verbose  bg.png \( xplanet.png  \ -crop 398x400+0+0 +repage \) -geometry +358+13 -composite \ header.png 
ftp -n ftp.squidy.info <<!
quote user username
quote pass password
quote CWD /path_de_limage
binary
put header.png
quit
!

Fichier config de Xplanet

[default] 
arc_color=white
bump_scale=1
cloud_gamma=1
cloud_ssec=false 
cloud_threshold=90
color={255,255,255}
draw_orbit=false 
grid=false
grid1=6
grid2=15
magnify=1
marker_color=red
marker_file=marker.txt
marker_font=arialbd.ttf
marker_fontsize=11
max_radius_for_label=3   
min_radius_for_label=.01  
min_radius_for_markers=40  
orbit={-.5,.5,2} 
orbit_color={255,255,255}
random_origin=true         
random_target=true 
shade=30              
text_color={255,0,0}  
twilight=8          
 [earth] 
cloud_map=clouds_2048.jpg 
image=day.tif
night_map=night.tif

Le fichier marker.txt contient seulement la ligne pour Montréal soit:

 45.50  -73.60 "Montréal"	color=white

Comments (4)

  1. 15 February 2006
    fred brassard said...

    ben là squid, tout le monde savait ca !!! ;)

  2. 18 February 2006
    Philippe said...

    L’icone pour ton site, dans les onglets de Firefox pas exemple, est une planete.
    Est-ce qu’elle est modifie au 3 h aussi?

  3. 18 February 2006

    Ah tiens, j’y avais pas pensé! Mais là, je trouverais ça exagéré lol

  4. 20 February 2006
    Jean-Max said...

    J’ai rien compris à ton explication…
    Mais le résultat est vraiment cool !!