Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox

Introduction aux fonctions de dessin de la librairie GD

Compatible PHP. Cliquer pour en savoir plus sur les compatibilités.Par Ldo, le 10 juillet 2005
  • Révision : Ldo le 04/09/2007

Introduction

La librairie GD de php permet de travailler sur les images, une des utilisations les plus courante, est la génération de graphiques pour les outils de statistiques.

Avant de dessiner

En premier lieu, il faut créer une nouvelle ressource image, pour cela on utilise la fonction ImageCreate. Les dimensions de l'image sont exprimées en pixel

<?php
$largeur = 88;
$hauteur = 31;
$image = imagecreate($largeur,$hauteur);
?>

Une fois l'image initialisée, il faut maintenant définir toutes les couleurs qui vont être utilisées dans cette image, la fonction ImageColorAllocate est là pour ça. Les couleurs sont exprimées en RGB (RVB pour nous français).

<?php
$noir = imagecolorallocate($image,0,0,0);
$blanc = imagecolorallocate($image,255,255,255);
$jaune = imagecolorallocate($image,255,255,0);
?>

Nous venons donc ici de créer les 3 couleurs qui seront utilisées dans l'image référencée $image. Note: la couleur d'arrière plan de l'image est la première couleur définie, ici la couleur de fond est donc le noir.

Les fonctions

Regardons de plus près quelques unes des fonctions de dessin. Avant de commencer, il faut savoir que l'origine de l'image, le point 0,0 se situe dans le coin supérieur gauche de l'image.

Dessinons un pixel On utilise pour cela la fonction imagesetpixel : elle s'utilise de la manière suivante :

imagesetpixel ([ressource image], [coordonnées x,y], [couleur])
<?php
Imagesetpixel ($image,44,15,$blanc);
?>

Dessinons une ligne Pour les lignes, c'est imageline dont nous aurons besoin : elle s'utilise de la façon suivante :

imageline ([ressource image], [x,y de début], [x,y de fin], [couleur])
<?php
imageline ($image,10,15,74,15,$blanc);
?>

Ici nous dessinons donc une ligne horizontale sur l'image $image de début x=20,y=30 et de fin x=40,y=30 de couleur noire.

Dessinons un rectangle vide Pour dessiner un rectangle vide, on utilise la fonction imagerectangle : elle s'utilise de la même manière que imageline.

imagerectangle ([ressource image], [x,y de début], [x,y de fin], [couleur])
<?php
imagerectangle ($image,5,5,83,26,$jaune);
?>

Nous venons de dessiner un rectangle vide dans l'image $image de coordonnées de début x=5, y=5 et de fin x=25, y=20 de couleur jaune

pour dessiner un rectangle plein, la fonction est : imagefilledrectangle

<?php
imagefilledrectangle ($image,5,5,83,26,$jaune);
?>

Dessinons un cercle vide La fonction est imagearc : son utilisation nécessite plus de paramètres :

imagearc ([ressource image], [x,y du centre], [largeur et hauteur du cercle], [debut et fin en degres], [couleur])
<?php
imagearc ($image, 44,15, 20,20, 0,360, $blanc);
?>

Pour obtenir un cercle plein, même principe que pour les rectangles, on utilise imagefilledarc

Il est l'heure d'afficher le résultat

en premier lieu, il faut indiquer au navigateur que le document est une image png (type image/png), et non un document html (type text/html). Avec GD, vous avez le choix entre 2 formats de sortie, le png ou le jpg (le gif n'étant plus supporté depuis la version 1.6 de GD).

<?php
header ("content-type: image/png");
?>

Il ne reste plus qu'à afficher le contenu de l'image référencée.

<?php
imagepng($image);
?>

Puis détruire la ressource

<?php
imagedestroy($image);
?>