www.philatelistes.net - Dessiner un camembert avec PHP
Algérie Philatélie
Algérie philatélie la référence des collectionneurs des timbres d'Agérie

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