www.philatelistes.net - Dessiner un camembert avec PHP
Taillandiers Philatelie
Spécialiste des nouveautés du monde
Lettres de la 2ème Guerre Mondiale
Le monde depuis 1945 jusqu'à nos jours

www.philatelistes.net

Rechercher Membres Contacts Aide
Modération off     Accueil | Actualité | Annonces | Forum | Philamômes | Histoire postale | Merson | Liens

Actualité
Actualité

Evénements

Revue de presse
Le forum
Les sondages

Vendre, Acheter, Echanger
Les adresses
Ventes sur offres ou à prix nets
Petites annonces

Dessiner un camembert avec PHP


Introduction
Astuces PHP et MySQL
Les images
Caractères ASCII
Couleurs du Web
Le e-mail
Aspects légaux
Javascript

Exemple

camembert

code PHP

pour télécharger, cliquez ici 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($image000);

 for( 
$i=$diametre $i>=$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($image2$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($img255255255);

 
imagefill($img00$fontcolor);

 
$total 0;
 for( 
$i=$i<sizeof($tabval) ; $i++ )
    {
     
$total $total $tabval[$i];     
    }
 
$unite 360/$total;
 
$begin 190;

 for( 
$i=$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 == )
         { 
$col1 "255";  $col2 "0"$col3 "0"; }  # rouge  (1e portion)
     
if( $i == )
         { 
$col1 "0"$col2 "0"$col3 "255";  }  # bleu   (2e portion)
     
if( $i == )
         { 
$col1 "255"$col2 "255"$col3 "0"; } # jaune  (3e portion)
     
if( $i == )
         { 
$col1 "0";  $col2 "255"$col3 "0"; }  # vert   (4e portion)
     
if( $i == )
         { 
$col1 "255"$col2 "0"$col3 "255"; } # violet (5e portion)
     
if( $i >= )
         { 
$col1 "0"$col2 "0"$col3 "0"; }     # noir   (au dela)
     
     
$coul      imagecolorallocate($img,$col1,$col2,$col3);
     
$part  $tabval[$i]*$unite;
     
portion(110100120$part$begin$coul$imgnumber_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);

?> 


Imprimer cette page  | Recommander cette page à un ami


Toussaint COPPOLANI
Toussaint COPPOLANI

Copyright © 2000 www.philatelistes.net
Credits, Critiques