<?php
// ------------------------------------------------------------------------- //
// Affichage d'une horloge originale. //
// Petit exemple de génération d'une image au format PNG. L'appel du script //
// se réalise donc par un simple <img src="ShowTimer.php">. //
// Le script est entièrement configurable, de la taille de l'image générée //
// aux couleurs. Il génére une horloge "originale" !!! //
// ------------------------------------------------------------------------- //
// Auteur: jcd //
// Email: jeanclaudeduss@laposte.net //
// Web: //
// ------------------------------------------------------------------------- //
// Taille de l'image minimum : 90x90 !!!
$largeur = 90;
$hauteur = 90;
// Création de l'image
$img = imagecreate($largeur,$hauteur);
// ----- Paramètres de l'application -----
// Allocation des couleurs
$couleurFond = imagecolorallocate($img,125,146,218); // Attention couleur transparente
$couleurTrait = imagecolorallocate($img,0,0,0); // par defaut noir
$couleurHeur = imagecolorallocate($img,255,0,0); // par défaut rouge
$couleurMin = imagecolorallocate($img,255,255,0); // par défaut jaune
$couleurSec = imagecolorallocate($img,0,255,0); // par défaut vert
// Ce paramètre s'il est initialisé à "true" trace le contour de l'horloge
$affiche_echelle = true;
// Ce paramètre s'il est initialisé à "true" affiche le swatch internet time au
// centre de l'horloge
$affiche_beat = true;
// Epaisseur des aiguilles
$epais = 20;
// --- Fin des paramètres de l'application ---
// Récupération de l'heure
$heure = date("h"); // l'heure
$minute = date("i"); // les minutes
$seconde = date("s"); // les secondes
$at = '@'.date("B"); // Swatch internet time
// Coordonées du centre de l'image
$cx = $largeur / 2;
$cy = $hauteur / 2;
// Taille des heures
$th = $largeur;
// Taille des minutes
$tm = $largeur - $epais;
// Taille des secondes
$ts = $largeur - ($epais*2);
imagecolortransparent ($img,$couleurFond);
// --- Départ création de l'image ---
// fond de l'image
imagefilledrectangle($img,0,0,$largeur,$hauteur,$couleurFond);
// Arc des heures
// 1 Heure = 30°
$cal_heure = $heure * 30;
$cal_heure = $cal_heure - 90; // décalage de 90° pour placer le départ en haut
for ($i=0;$i < $epais;$i++)
imagearc ($img,$cx,$cy,$th-$i,$th-$i,270,$cal_heure,$couleurHeur);
// Arc des minutes
// 1 minute = 6°
$cal_minute = $minute * 6;
$cal_minute = $cal_minute - 90; // décalage de 90° pour placer le départ en haut
for ($i=0;$i < $epais;$i++)
imagearc ($img,$cx,$cy,$tm-$i,$tm-$i,270,$cal_minute,$couleurMin);
// Arc des secondes
// 1 seconde = 6°
$cal_seconde = $seconde * 6;
$cal_seconde = $cal_seconde - 90; // décalage de 90° pour placer le départ en haut
for ($i=0;$i < $epais;$i++)
imagearc ($img,$cx,$cy,$ts-$i,$ts-$i,270,$cal_seconde,$couleurSec);
if ($affiche_echelle) {
// Trace des echelles
// heure
imagearc ($img,$cx,$cy,$th,$th,0,360,$couleurTrait);
// minute
imagearc ($img,$cx,$cy,$tm,$tm,0,360,$couleurTrait);
// seconde
imagearc ($img,$cx,$cy,$ts,$ts,0,360,$couleurTrait);
// interne
imagearc ($img,$cx,$cy,$ts-$epais,$ts-$epais,0,360,$couleurTrait);
// graduations
for ($i=0;$i < 360;$i+=30) {
for ($j=0;$j < $epais;$j++) {
imagearc ($img,$cx,$cy,$th-$j,$th-$j,$i,$i+1,$couleurTrait);
}
}
}
if ($affiche_echelle)
imagestring($img,2,$cx-12,$cy-6,$at,$couleurTrait);
// Enfin, on envoie l'image au navigateur
header("Content-Type: image/png"); // format PNG
imagepng($img);
?>