OUJOOD.COM
Dessiner des polygones avec PHP GD
PHP GD permet de générer des images directement depuis votre code. Parmi les formes qu'on peut tracer, les polygones sont particulièrement utiles : triangles, rectangles, losanges, étoiles — tout ce qui a au moins 3 sommets. Dans ce tutoriel, on va voir comment utiliser les deux fonctions dédiées à cet usage : imagepolygon() pour les formes vides, et imagefilledpolygon() pour les formes pleines.
La logique est toujours la même : vous définissez une liste de coordonnées (les sommets), vous indiquez combien il y en a, et PHP trace les contours automatiquement en reliant les points dans l'ordre.
La fonction imagepolygon() : syntaxe et paramètres
Pour tracer un polygone vide (contour uniquement, sans remplissage), on utilise :
imagepolygon($image, $tableau_points, $nombre_points, $couleur)
- $image : la ressource image créée avec imagecreatetruecolor() ou imagecreate()
- $tableau_points : un tableau PHP qui liste les coordonnées x et y de chaque sommet, dans l'ordre
- $nombre_points : le nombre total de sommets (minimum 3)
- $couleur : un identifiant de couleur obtenu avec imagecolorallocate()
Pour une forme remplie, on remplace simplement imagepolygon() par imagefilledpolygon() — les paramètres restent identiques.
Dessiner un triangle avec PHP GD
Un triangle, c'est le polygone le plus simple qui soit : 3 sommets, 3 côtés. Le tableau de coordonnées contient donc 6 valeurs (x et y pour chaque sommet).
L'exemple ci-dessous trace deux triangles vides côte à côte sur fond blanc. Chaque sommet est défini par une paire de coordonnées (x, y), exprimées en pixels depuis le coin supérieur gauche de l'image.
<?php // Coordonnées des sommets du premier triangle $points = array( 60, 50, // Sommet 1 (x, y) — en haut 20, 240, // Sommet 2 (x, y) — en bas à gauche 160, 230, // Sommet 3 (x, y) — en bas à droite ); // Coordonnées du second triangle (vers la droite) $pointsd = array( 60, 50, // Sommet 1 (x, y) — partagé avec le premier 180, 160, // Sommet 2 (x, y) 160, 230, // Sommet 3 (x, y) ); // Création d'une image 250×250 pixels $image = @imagecreate(250, 250); // Allocation des couleurs (fond blanc, deux nuances de bleu) $blanc = imagecolorallocate($image, 255, 255, 255); $bleu = imagecolorallocate($image, 0, 0, 255); $bleud = imagecolorallocate($image, 0, 0, 205); // Fond blanc imagefilledrectangle($image, 0, 0, 249, 249, $blanc); // Tracé des deux triangles (contours uniquement) imagepolygon($image, $points, 3, $bleu); imagepolygon($image, $pointsd, 3, $bleud); // Envoi de l'image au navigateur header('Content-type: image/png'); imagepng($image); imagedestroy($image); ?>
Pour obtenir des triangles pleins, il suffit de remplacer imagepolygon() par imagefilledpolygon(). Voici le même exemple avec remplissage et couleurs distinctes :
<?php // Définition des sommets $points = array( 60, 50, 20, 240, 160, 230, ); $pointsd = array( 60, 50, 180, 160, 160, 230, ); $image = @imagecreate(250, 250); $blanc = imagecolorallocate($image, 255, 255, 255); $bleu = imagecolorallocate($image, 0, 0, 255); $vert = imagecolorallocate($image, 0, 190, 100); imagefilledrectangle($image, 0, 0, 249, 249, $blanc); // Triangles remplis cette fois (imagefilledpolygon au lieu de imagepolygon) imagefilledpolygon($image, $points, 3, $bleu); imagefilledpolygon($image, $pointsd, 3, $vert); header('Content-type: image/png'); imagepng($image); imagedestroy($image); ?>
Dessiner un polygone à 6 sommets
On peut aller au-delà du triangle. Le code suivant dessine un polygone irrégulier à 6 sommets, en bleu sur fond noir. Notez que la fonction relie automatiquement le dernier sommet au premier pour fermer la forme.
<?php // 6 sommets = 12 valeurs dans le tableau (x, y pour chacun) $values = array( 40, 50, // Sommet 1 20, 240, // Sommet 2 60, 60, // Sommet 3 240, 20, // Sommet 4 50, 40, // Sommet 5 20, 20 // Sommet 6 ); // imagecreatetruecolor() offre plus de couleurs qu'imagecreate() $image = imagecreatetruecolor(250, 250); $bg = imagecolorallocate($image, 0, 0, 0); $blue = imagecolorallocate($image, 0, 0, 255); imagefilledrectangle($image, 0, 0, 249, 249, $bg); // 3e argument = nombre de sommets imagefilledpolygon($image, $values, 6, $blue); header('Content-type: image/png'); imagepng($image); imagedestroy($image); ?>
Dessiner un polygone à 12 sommets
Plus vous ajoutez de sommets bien placés, plus la forme peut ressembler à un cercle ou à une figure complexe. Voici un polygone à 12 sommets, tracé en rouge sur fond bleu. C'est une bonne base pour expérimenter des formes personnalisées comme des étoiles ou des boucliers.
<?php // 12 sommets disposés en forme de bouclier arrondi $values = array( 25, 75, // Sommet 1 50, 125, // Sommet 2 25, 175, // Sommet 3 75, 175, // Sommet 4 125, 200, // Sommet 5 175, 175, // Sommet 6 225, 175, // Sommet 7 200, 125, // Sommet 8 225, 75, // Sommet 9 175, 75, // Sommet 10 125, 50, // Sommet 11 75, 75 // Sommet 12 ); $image = imagecreatetruecolor(250, 250); $bg = imagecolorallocate($image, 0, 0, 255); // fond bleu $red = imagecolorallocate($image, 255, 0, 0); // forme rouge imagefilledrectangle($image, 0, 0, 249, 249, $bg); imagefilledpolygon($image, $values, 12, $red); header('Content-type: image/png'); imagepng($image); imagedestroy($image); ?>
Par carabde 20 Aout 2014 | Mis à jour le 06 Avril 2026