logo oujood
🔍

Dessiner des polygones avec PHP GD : imagepolygon() et imagefilledpolygon()

OUJOOD.COM

PHP cours tutorial

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.

  📋 Copier le code

<?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 :

  📋 Copier le code

<?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.

  📋 Copier le code

<?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.

  📋 Copier le code

<?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