Derni�re mise � jour :2008-09-20

informatique

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 d�ssiner

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

Listing 1.0
<?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).

Listing 2.0
<?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])

Listing 3.0
<?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])

Listing 4.0
<?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])

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

Listing 6.0
<?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])

Listing 7.0
<?php
imagearc ($image, 44,15, 20,20, 0,360, $blanc);
?>

Pour obtenir un cercle plein, meme principe que pour les rectangles, on utilise imagefilledarc

Il est l'heure d'affich� 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'etant plus support� depuis la version 1.6 de GD).

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

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

Listing 9.0
<?php
imagepng($image);
?>

Puis d�truire la ressource

Listing 10.0
<?php
imagedestroy($image);
?>

Auteur : Ldo

Copie autoris�e

Version originale : Article sous Creative Commons (Paternit� 2.0) r�cup�r� de dwef.12h26.com

Date de mise en ligne : 2005-05-12

Introduction aux fonctions de dessin de la librairie GD en PHP

j'ai essay� le code avec WampServer et IE 7 je n'affiche que du code imcompr�hensible. header ("content-type: image/png"); $largeur = 88; $hauteur = 31; $image = imagecreate($largeur,$hauteur); $noir = imagecolorallocate($image,0,0,0); $blanc = imagecolorallocate($image,255,255,255); $jaune = imagecolorallocate($image,255,255,0); Imagesetpixel ($image,44,15,$blanc); imageline ($image,10,15,74,15,$blanc); imagerectangle ($image,5,5,83,26,$jaune); imagefilledrectangle ($image,5,5,83,26,$jaune); imagepng($image); imagedestroy($image); r�sultat : �PNG  IHDRX��s PLTE�����^zJ�IDATx�c` � � �a��@�J?IEND�B`�

2008-07-10 00:00:00