Trouve un segment de chaîne ne contenant pas certains caractères
Pour dessiner des arcs de cercle. C'est la fonction imagearc() que l'on va utiliser .
La fonction ImageArc( ) étant très flexible, vous pouvez facilement créer des courbes courantes telles que des ellipses et des cercles en lui passant les bonnes valeurs.
ImageArc($image, $x, $y, $largeur, $hauteur, $debut, $fin, $couleur) ;
Pour dessiner une ellipse, utilisez ImageArc( ) et définissez $debut à 0 et $fin à 360 :ImageArc($image, $x, $y, $largeur, $hauteur, 0, 360, $couleur) ;
Pour dessiner un cercle, utilisez ImageArc( ), définissez $debut à 0, définissez $fin à 360, et utilisez la même valeur pour $largeur et $hauteur :ImageArc($image, $x, $y, $diametre, $diametre, 0, 360, $couleurr) ;
Pour dessiner des arcs de cercle. C'est la fonction imagearc()
que l'on va utiliser .
imagearc($image, $abscisse, $ordonnee, $largeur, $hauteur, $angle_debut, $angle_fin, $couleur)
Avec :
Mais faites attention, GD commence son arc à gauche et évolue dans le
sens contraire des aiguilles d'une montre. Les angles devront être
exprimés en degrés
Exemple
Exemple : Copier le code
<?php header("Content-type: image/png"); $largeur = 250; $hauteur = 250; $img = imagecreatetruecolor($largeur, $hauteur); $noir = imageColorAllocate($img, 0, 0, 0); $color = "5CDF00"; $rouge = hexdec("5C"); // canal rouge $vert = hexdec("D2"); // canal vert $bleu = hexdec("00"); // canal bleu //on créé la couleur1 et on l'attribue à une variable $couleur= imageColorAllocate($img, $rouge,$vert, $bleu); //on créé un arc avec une ouverture de 180 degrés imagearc($img,50,50,70,70,0,180,$couleur); //on créé un second arc avec une ouverture de 250 degrés et une epaisseur de 5px $size="5"; imagesetthickness($img, $size); imagearc($img,150,150,70,70,0,250,$couleur); imagePNG($img); imageDestroy($img); ?>
Pour dessiner un arc plein on utilise la fonction :
imagefilledarc
mais elle demande un argument supplémentaire. L'argument est limité à
4 choix.
Avec l’argument supplémentaire devient comme suit :
imagearc($image, $abscisse, $ordonnee, $largeur, $hauteur, $angle_debut, $angle_fin, $couleur, IMG_ARC_PIE )
Exemple :
Exemple : Copier le code
<?php header('Content-type: image/png'); // Création de l'image $image = imagecreatetruecolor(100, 100); // Allocation de couleurs $rouge = imagecolorallocate($image, 0xFF, 0x00, 0x00); /* On crée un arc plein */ imagefilledarc($image, 50, 50, 100, 50, 75, 360 , $rouge, IMG_ARC_PIE); // Affichage de l'image imagepng($image); imagedestroy($image); ?>
Pour appliquer ces notions, voici un exemple très simple.
On veut créer un histogramme (graphique) sous forme d’un diagramme "
camemberts " représentant le nombre de visites sur votre site web sur
les 12 mois de l'année.
Imaginons donc que le nombre de visites pour chacun des 12 mois est
placé dans le tableau $visites que vous avez récupéré de votre base de
données MySQL par exemple.
Voici le tableau :
$visites = array(88, 142, 288, 322, 676, 829, 536, 556, 693
, 352, 427, 888).
En suite nous allons faire un peu de mathématique.
Nous calculons le nombre total de visiteur sur nos 12 mois et nous le
stockons dans une variable :
Pour ce calcule nous utilisons la fonction de php array_sum($array)
qui sert pour calculer la somme des valeurs d’un tableau.
$nbrVisiteur = array_sum($visites);
On calcule les angles pour les éléments :
Pour chaque élément l’angle qui va le représenter est :
Le nombre de visite de l’élément divisé par le nombre total des
visites sur les 12 mois multiplier par 360.
Nous stockons ces angles dans la variable array $angle.
Puis nous calculons les angles de départ et d’arrivée de chaque élément
que nous stockons dans la variable array $parciel.
Pour cela nous aurons le bout de code suivant :
$parciel[0] = 0;
for ($i = 0; $i <= 11 ; $i++) {
$angle[$i] = ($visites[$i]/$nbrVisiteur)*360;
$parciel[$i+1]=array_sum($angle);
}
On crée l'image du départ
$img = imagecreate(210, 210);
On donne une couleur au fond de l'image
$background = imagecolorallocate($img, 255, 255, 255);
On crée les couleurs pour les éléments
$elementcolor[0] = imagecolorallocate($img, 255, 203, 3);
$elementcolor[1] = imagecolorallocate($img, 220, 101, 29);
$elementcolor[2] = imagecolorallocate($img, 189, 24, 51);
$elementcolor[3] = imagecolorallocate($img, 214, 0, 127);
$elementcolor[4] = imagecolorallocate($img, 98, 1, 96);
$elementcolor[5] = imagecolorallocate($img, 0, 62, 136);
$elementcolor[6] = imagecolorallocate($img, 0, 102, 179);
$elementcolor[7] = imagecolorallocate($img, 0, 145, 195);
$elementcolor[8] = imagecolorallocate($img, 0, 115, 106);
$elementcolor[9] = imagecolorallocate($img, 178, 210, 52);
$elementcolor[10] = imagecolorallocate($img, 137, 91, 74);
$elementcolor[11] = imagecolorallocate($img, 82, 56, 47);
Maintenant on peut notre diagramme en utilisons encor une fois la
boucle for.
Et c'est terminé...
En fin regroupons tous ces bouts de code pour avoir le code de notre
graphe en entier comme le montre l’exemple suivant :
Exemple : créer le diagramme des visiteurs d’un site web
Exemple : Copier le code
<?php $visites = array(88, 142, 288, 322, 676, 829, 536, 556, 693, 352, 427, 888); // On calcule le nombre total des visiteurs. $nbrVisiteur = array_sum($visites); /*On calcule l'angle de départ et l'angle de fin pour les éléments*/ $parciel[0] = 0; for ($i = 0; $i <= 11 ; $i++) { $angle[$i] = ($visites[$i]/$nbrVisiteur)*360; $parciel[$i+1]=array_sum($angle); } //On crée l'image du départ $img = imagecreate(210, 210); //On donne une couleur au fond de l'image $background = imagecolorallocate($img, 255, 255, 255); //On crée les couleurs pour les éléments $elementcolor[0] = imagecolorallocate($img, 255, 203, 3); $elementcolor[1] = imagecolorallocate($img, 220, 101, 29); $elementcolor[2] = imagecolorallocate($img, 189, 24, 51); $elementcolor[3] = imagecolorallocate($img, 214, 0, 127); $elementcolor[4] = imagecolorallocate($img, 98, 1, 96); $elementcolor[5] = imagecolorallocate($img, 0, 62, 136); $elementcolor[6] = imagecolorallocate($img, 0, 102, 179); $elementcolor[7] = imagecolorallocate($img, 0, 145, 195); $elementcolor[8] = imagecolorallocate($img, 0, 115, 106); $elementcolor[9] = imagecolorallocate($img, 178, 210, 52); $elementcolor[10] = imagecolorallocate($img, 137, 91, 74); $elementcolor[11] = imagecolorallocate($img, 82, 56, 47); //On crée le diagramme des visiteurs for ($i = 0; $i <= 11 ; $i++) { imagefilledarc($img, 100, 100, 200, 200, $parciel[$i], $parciel[$i + 1], $elementcolor[$i], IMG_ARC_PIE); } //On affiche l'image le diagramme des visiteurs header('Content-type: image/png'); imagepng($img); imagedestroy($img); ?>
Vous pouvez améliorer ce code on ajoutant du texte. Une légende par
exemple.
Et voila notre diagramme avec un effet 3D
Exemple :
Exemple : Copier le code
<?php $visites = array(88, 142, 288, 322, 676, 829, 536, 556, 693, 352, 427, 888); // On calcule le nombre total des visiteurs. $nbrVisiteur = array_sum($visites); /*On calcule l'angle de départ et l'angle de fin pour les éléments*/ $parciel[0] = 0; for ($i = 0; $i <= 11 ; $i++) { $angle[$i] = ($visites[$i]/$nbrVisiteur)*360; $parciel[$i+1]=array_sum($angle); } //On crée l'image du départ $img = imagecreate(250, 250); //On donne une couleur au fond de l'image $background = imagecolorallocate($img, 255, 255, 255); //On crée les couleurs pour les éléments $elementcolor[0] = imagecolorallocate($img, 255, 203, 3); $elementcolor[1] = imagecolorallocate($img, 220, 101, 29); $elementcolor[2] = imagecolorallocate($img, 189, 24, 51); $elementcolor[3] = imagecolorallocate($img, 214, 0, 127); $elementcolor[4] = imagecolorallocate($img, 98, 1, 96); $elementcolor[5] = imagecolorallocate($img, 0, 62, 136); $elementcolor[6] = imagecolorallocate($img, 0, 102, 179); $elementcolor[7] = imagecolorallocate($img, 0, 145, 195); $elementcolor[8] = imagecolorallocate($img, 0, 115, 106); $elementcolor[9] = imagecolorallocate($img, 178, 210, 52); $elementcolor[10] = imagecolorallocate($img, 137, 91, 74); $elementcolor[11] = imagecolorallocate($img, 82, 56, 47); //on créer les couleurs pour l'effet 3D $delementcolor[0] = imagecolorallocate($img, 205, 153, 0); $delementcolor[1] = imagecolorallocate($img, 170, 51, 0); $delementcolor[2] = imagecolorallocate($img, 139, 0, 1); $delementcolor[3] = imagecolorallocate($img, 164, 0, 77); $delementcolor[4] = imagecolorallocate($img, 48, 0, 46); $delementcolor[5] = imagecolorallocate($img, 0, 12, 86); $delementcolor[6] = imagecolorallocate($img, 0, 52, 129); $delementcolor[7] = imagecolorallocate($img, 0, 95, 145); $delementcolor[8] = imagecolorallocate($img, 0, 65, 56); $delementcolor[9] = imagecolorallocate($img, 128, 160, 2); $delementcolor[10] = imagecolorallocate($img, 87, 41, 24); $delementcolor[11] = imagecolorallocate($img, 32, 6, 0); //on crée l'effet 3D for ($i = 0; $i <= 11 ; $i++) { for($n = 115; $n > 100; $n--){ imagefilledarc($img, 100, $n, 200, 100, $parciel[$i], $parciel[$i + 1], $delementcolor[$i], IMG_ARC_PIE); } } //On crée le diagramme des visiteurs for ($i = 0; $i <= 11 ; $i++) { imagefilledarc($img, 100, 100, 200, 100, $parciel[$i], $parciel[$i + 1], $elementcolor[$i], IMG_ARC_PIE); } //On affiche l'image le diagramme des visiteurs header('Content-type: image/png'); imagepng($img); imagedestroy($img); ?>Par carabde 20 Aout 2014