This one use the dhtml
class to create an original clock (ShowTimer.php from jcd).
<?php define( 'DHTML_DEBUG', 0 ); include 'include/dhtml/dhtml.inc'; class clock extends dhtml { var $temp_fname; function clock() { parent::dhtml('Clock', null, true, '120x140'); $this->toolwindow(true); $this->topmost(true); $this->redraw(); // for topmost & toolwindow $this->temp_fname= getenv('TEMP').'\\php_clock.png'; } function on_init() { $this->load_default(); } function on_page_load() { create_image($this->temp_fname); $this->id_html( 'body', '<img id="clock" src="'.$this->temp_fname.'" style="width:100%;height:100%">' ); $this->set_timer(1, 1000); } function set_image() { create_image($this->temp_fname); $this->id_img_src('clock', $this->temp_fname); } function on_timer($id) { $this->set_image(); } function on_close() { parent::on_close(); unlink($this->temp_fname); } } new clock(); dhtml::run(); // ------------------------------------------------------------------------- // // 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: // // ------------------------------------------------------------------------- // function create_image($fname) { // 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, $fname); return true; } ?>