Source de ce script : <!DOCTYPE html><title>Un dessin en PHP</title><?phpecho "Source de ce script :\n";echo "<figure>\n";highlight_file(__FILE__);echo "</figure>\n";echo "L'image ci-dessous est fabriquée par un script PHP.";echo "<figure><img src=\"faireHisto.php\" alt=\"histogramme\" /></figure>";echo "Voici le source PHP pour fabriquer l'image : ";echo "<figure>\n";highlight_file("faireHisto.php");echo "</figure>\n";?> L'image ci-dessous est fabriquée par un script PHP.Voici le source PHP pour fabriquer l'image : <?php// Fabrique un histogramme// void histogramme(string texteLegende, array data, [int pasGraduation] )function histogramme($texteLegende, $data, $pasGraduation = 0) { $maxValeur = max($data); // ^ ---------------------------- $maxValeur *= 1.1; // | | if ($maxValeur == 0) // | | $maxValeur = 1; // hauteur | | $largeur = 600; // | | $hauteur = 300; // v | | $fonte = 2; // ^ | | $hauteurLegende = 30; // hauteurLeg| | $fonteLegende = 3; // v ---------------------------- // < largeur > // par défaut, le pas est une puissance de 10 if ($pasGraduation == 0) $pasGraduation = pow(10, round(log10($maxValeur))-1); $img = ImageCreate($largeur, $hauteur + $hauteurLegende); $couleurFond = ImageColorAllocate($img, 250, 240, 230); // linen $couleurGrille = ImageColorAllocate($img, 100, 100, 100); // grey $couleurBarre = ImageColorAllocate($img, 205, 85, 85); // IndianRed $couleurTexte = ImageColorAllocate($img, 47, 79, 79); // DarkSlateGray // dessin du fond ImageFill($img, 0, 0, $couleurFond); for ($valeur = 0; $valeur < $maxValeur; $valeur += $pasGraduation) { $i = ($hauteur - round($hauteur * $valeur / $maxValeur)); ImageSetStyle($img, array($couleurGrille, $couleurGrille, $couleurGrille, $couleurFond, $couleurFond, $couleurFond)); ImageLine($img, 0, $i, $largeur, $i, IMG_COLOR_STYLED); ImageString($img, $fonte, 5, $i-imageFontHeight($fonte), $valeur, $couleurTexte); } // dessin des barres $nbdata = sizeof($data); $largeurBarre = $largeur / ($nbdata+1) / 2; $barreGauche = $largeurBarre/2; reset($data); while (list($nom, $valeur) = each($data)) { $barreGauche += 2 * $largeurBarre; $barreHaut = ($hauteur - round($hauteur * $valeur / $maxValeur)); ImageFilledRectangle($img, $barreGauche, $barreHaut, $barreGauche+$largeurBarre, $hauteur, $couleurBarre); //inscrire le nom verticalement dans le rectangle $labelX = $barreGauche + $largeurBarre/2; $labelY = $hauteur - 10; ImageStringUp($img, $fonte, $labelX, $labelY, $nom, $couleurTexte); } if ($hauteurLegende > 0) ImageString($img, $fonteLegende, $largeurBarre, $hauteur+$hauteurLegende/2, $texteLegende, $couleurTexte); // on crée du png, donc on indique son type mime //header("Content-type: image/png"); ImagePng($img);} $systemes = array ("Windows en 1998" => 38, "Netware en 1998" => 19, "Linux en 1998" => 16, "Autres Unix en 1998" => 23, "Autres en 1998" => 4, "Windows en 1999" => 38, "Netware en 1999" => 15, "Linux en 1990" => 25, "Autres Unix en 1999" => 19, "Autres en 1999" => 3, "Windows en 2000" => 41, "Netware en 2000" => 14, "Linux en 2000" => 27, "Autres Unix en 2000" => 17, "Autres en 2000" => 1 );histogramme("Repartition des ventes mondiales de serveurs en %", $systemes);?>
<!DOCTYPE html><title>Un dessin en PHP</title><?phpecho "Source de ce script :\n";echo "<figure>\n";highlight_file(__FILE__);echo "</figure>\n";echo "L'image ci-dessous est fabriquée par un script PHP.";echo "<figure><img src=\"faireHisto.php\" alt=\"histogramme\" /></figure>";echo "Voici le source PHP pour fabriquer l'image : ";echo "<figure>\n";highlight_file("faireHisto.php");echo "</figure>\n";?>
<?php// Fabrique un histogramme// void histogramme(string texteLegende, array data, [int pasGraduation] )function histogramme($texteLegende, $data, $pasGraduation = 0) { $maxValeur = max($data); // ^ ---------------------------- $maxValeur *= 1.1; // | | if ($maxValeur == 0) // | | $maxValeur = 1; // hauteur | | $largeur = 600; // | | $hauteur = 300; // v | | $fonte = 2; // ^ | | $hauteurLegende = 30; // hauteurLeg| | $fonteLegende = 3; // v ---------------------------- // < largeur > // par défaut, le pas est une puissance de 10 if ($pasGraduation == 0) $pasGraduation = pow(10, round(log10($maxValeur))-1); $img = ImageCreate($largeur, $hauteur + $hauteurLegende); $couleurFond = ImageColorAllocate($img, 250, 240, 230); // linen $couleurGrille = ImageColorAllocate($img, 100, 100, 100); // grey $couleurBarre = ImageColorAllocate($img, 205, 85, 85); // IndianRed $couleurTexte = ImageColorAllocate($img, 47, 79, 79); // DarkSlateGray // dessin du fond ImageFill($img, 0, 0, $couleurFond); for ($valeur = 0; $valeur < $maxValeur; $valeur += $pasGraduation) { $i = ($hauteur - round($hauteur * $valeur / $maxValeur)); ImageSetStyle($img, array($couleurGrille, $couleurGrille, $couleurGrille, $couleurFond, $couleurFond, $couleurFond)); ImageLine($img, 0, $i, $largeur, $i, IMG_COLOR_STYLED); ImageString($img, $fonte, 5, $i-imageFontHeight($fonte), $valeur, $couleurTexte); } // dessin des barres $nbdata = sizeof($data); $largeurBarre = $largeur / ($nbdata+1) / 2; $barreGauche = $largeurBarre/2; reset($data); while (list($nom, $valeur) = each($data)) { $barreGauche += 2 * $largeurBarre; $barreHaut = ($hauteur - round($hauteur * $valeur / $maxValeur)); ImageFilledRectangle($img, $barreGauche, $barreHaut, $barreGauche+$largeurBarre, $hauteur, $couleurBarre); //inscrire le nom verticalement dans le rectangle $labelX = $barreGauche + $largeurBarre/2; $labelY = $hauteur - 10; ImageStringUp($img, $fonte, $labelX, $labelY, $nom, $couleurTexte); } if ($hauteurLegende > 0) ImageString($img, $fonteLegende, $largeurBarre, $hauteur+$hauteurLegende/2, $texteLegende, $couleurTexte); // on crée du png, donc on indique son type mime //header("Content-type: image/png"); ImagePng($img);} $systemes = array ("Windows en 1998" => 38, "Netware en 1998" => 19, "Linux en 1998" => 16, "Autres Unix en 1998" => 23, "Autres en 1998" => 4, "Windows en 1999" => 38, "Netware en 1999" => 15, "Linux en 1990" => 25, "Autres Unix en 1999" => 19, "Autres en 1999" => 3, "Windows en 2000" => 41, "Netware en 2000" => 14, "Linux en 2000" => 27, "Autres Unix en 2000" => 17, "Autres en 2000" => 1 );histogramme("Repartition des ventes mondiales de serveurs en %", $systemes);?>