GD, une bibliothèque graphique pour PHP

Se présentant sous la forme d'une extension au langage de script côté serveur, la bibliothèque Open Source est conçue pour créer dynamiquement des images. Démonstration avec code à l'appui.

La bibliothèque graphique GD permet de créer, de modifier et de supprimer des images. Il est aussi possible d'accéder aux informations IPTC stockées dans les images reconnaissant cette norme. Définie par l'organisme de normalisation du secteur de la presse, IPTC permet d'inclure des informations de copyright dans des fichiers images. C'est une méthode très utilisée par les journalistes et les photographes.

 

GD propose des fonctions pour manipuler les images : créer, modifier, enregistrer, ajouter des informations, ou les supprimer. Chaque fonction va renvoyer un identifiant de ressource. Depuis PHP 4.3, une version de GD est incluse dans le langage. Administrer des images peut demander beaucoup de ressources mémoire et processeur. L'utilisation d'un cache peut être utile pour éviter de recréer l'image à chaque appel.

 

Il est nécessaire d'installer la librairie GD sur le serveur pour activer les fonctions. Sous Linux, son déploiement demande d'éditer le fichier php.ini et d'ajouter à la fin l'extension "extension=gd.so". Même processus sous EasyPHP: édition de php.ini (il est nécessaire ensuite d'enlever l'instruction de commentaire (;) devant "extension=php_gd2.dll").

 

Pour vérifier le bon fonctionnement de GD, faire un phpinfo() en créant un fichier qui sera appellé du serveur (via le navigateur), et qui contient le script suivant:

<?php

phpinfo();

?>

 

Vérifier que GD Support est à "enabled". Dans la partie HTML, faire un lien image vers un fichier PHP qui va générer l'image.

 

<img src= "chemin/image.php">

Le fichier image.php va contenir les instructions pour construire et utiliser des images. L'origine du repère d'une image se situe en haut à gauche. Depuis la version 2.0 de GD, le format GIF n'est plus supporté et a été remplacé par le format PNG. 
 

 

<?

//headers indiquant les types de documents qui vont être créés

//les librairies correspondantes doivent être installées

header ("Content-type:image/png");  

header ("Content-type:image/jpg");

// création ou ouverture d'une image

$img=@ImageCreate(200, 100);

//création d'une image vide de 200*100

imagecreatefromjpeg(chemin_image);

//ouverture d'une image existante

//options de modification

$couleur_fond=ImageColorAllocate($image, 255, 0, 0);

//couleur de fond (accepte que des valeurs en RVB) 

ImageLine($im, 20, $hauteur-40, $largeur-15, $hauteur-40, $noir);

//trait horizontal

ImageLine ($im, 20, 30, 20, $hauteur-40, $noir);

//trait vertical

$image=imagecreatetruecolor(50,100);

//création une image en vraies couleurs (32 bits)

//par défaut une image est en 256 couleurs

$rouge=imagecolorallocate($image, 0, 0, 0);

//création une couleur avec un identifiant de ressource

imagecolorallocatedalpha($x, $y, $alpha);

//gère la transparence, $alpha de 0 (opaque) à 127 (transparent)

Imagefill($image, 0, 0, $red);

//remplit une image selon des coordonnées et une couleur définis

Imageline($image,$x_orig, $y_orig, $x_dest, $y_dest, $couleur); 

//création d'une ligne sur l'image

// affichage ou enregistrement de l'image

ImageJpeg($image);                                              

//affiche l'image en JPG

ImagePng($image, 'chemin fichier cible');     

//enregistre l'image en PNG

// destruction de l'image pour libérer de la mémoire

imagedestroy($image);

?>

 

Il existe d'autres bibliothèques Open Source pour PHP. Par exemple, JpGraph permet de créer des graphes, totalement orientés objet. Pour cela, il faut importer les bibliothèques de base (JpGraph.php) avec une include ou les bibliothèque(s) concernant le type de graphe souhaité (ex : JpGraph_line.php).

 

Une alternative à JpGraph est Artichow. Gallery est une autre bibliothèque Open Source pour la gestion d'albums photo.