Vendre, Acheter, Echanger
|
|
|
|
|
Dessiner un camembert avec PHP
Exemple
code PHP
pour télécharger, cliquez ici
Code associé
<?php
// ------------------------------------------------------------------------- // // Créer des stats visuelles sous forme de "camembert" // // ------------------------------------------------------------------------- // // Auteur: Fabrice Potec <fpotec@nerim.fr> // // Web: http://www.djfab.net/ // // ------------------------------------------------------------------------- //
/* fonction qui crée un camembert (stats visuelles) suivant des valeurs entrantes. Cette fonction est une adaptation d'une fonction trouvée dans un bouquin à ma sauce. */
// ================================================== // // La librairie graphique php3_gd doit être installée. // Sous windows ajoutez au début : dl("php3_gd.dll"); // ================================================== //
// dl("php3_gd.dll"); // uniquement sous windows (laissez en commentaire sinon)
/* Cette fonction permet de dessiner une portion de camembert */
function Portion($xc,$yc,$diametre,$epaisseur,$dep,$couleur,$image,$caption) { /* Définition de la couleur du fond (R,V,B) */ $bgcolor = imagecolorallocate($image, 0, 0, 0);
for( $i=$diametre ; $i>=0 ; $i-- ) { imagearc($image,$xc,$yc,$i,$i,$dep,$dep+$epaisseur,$couleur); } $alpha = ($dep + ($epaisseur/2)) * ((2*M_PI)/360);
$cs = 95 * cos($alpha); $sn = 95 * sin($alpha); $xt = $xc + $cs; $yt = $yc + $sn;
imagestring($image, 2, $xt, $yt, $caption, $bgcolor); }
/* Cette fonction construit le camembert à partir du tableau des valeurs ($tb) */
function Camembert($tabval) { $img = imagecreate(230,200);
/* Définition de la couleur de la police (R,V,B) */ $fontcolor = imagecolorallocate($img, 255, 255, 255);
imagefill($img, 0, 0, $fontcolor);
$total = 0; for( $i=0 ; $i<sizeof($tabval) ; $i++ ) { $total = $total + $tabval[$i]; } $unite = 360/$total; $begin = 190;
for( $i=0 ; $i<sizeof($tabval) ; $i++ ) { /* Définition des couleurs des portions (ici 5 couleurs sont définies). Veillez à définir autant de couleurs que de valeurs entrantes dans "$tb". */ if( $i == 0 ) { $col1 = "255"; $col2 = "0"; $col3 = "0"; } # rouge (1e portion) if( $i == 1 ) { $col1 = "0"; $col2 = "0"; $col3 = "255"; } # bleu (2e portion) if( $i == 2 ) { $col1 = "255"; $col2 = "255"; $col3 = "0"; } # jaune (3e portion) if( $i == 3 ) { $col1 = "0"; $col2 = "255"; $col3 = "0"; } # vert (4e portion) if( $i == 4 ) { $col1 = "255"; $col2 = "0"; $col3 = "255"; } # violet (5e portion) if( $i >= 5 ) { $col1 = "0"; $col2 = "0"; $col3 = "0"; } # noir (au dela) $coul = imagecolorallocate($img,$col1,$col2,$col3); $part = $tabval[$i]*$unite; portion(110, 100, 120, $part, $begin, $coul, $img, number_format($tabval[$i],1)." %"); $begin = $begin + $part; } $Camembert = imageJpeg($img); }
/* Le total des valeurs entrantes doit être égal à 100 pour ne pas fausser les stats */ $tb = array(5.3,14.9,19.2,40.1,20.5);
/* Appel de la fonction */ Camembert($tb);
?>
|
 |
|
|