Manipulation d'images en PHP - Librairie GD

Auteur: Mohamed CHINY Durée necessaire pour le cours de Manipulation d'images en PHP - Librairie GD Niveau recommandé pour le cours de Manipulation d'images en PHP - Librairie GD Supports vidéo non disponibles pour ce cours Exercices de renforcement disponibles pour ce cours Quiz non disponibles pour ce cours

Page 2: Activer l'extension GD

Toutes les pages

Préparer le serveur

GD est une extension PHP. Par conséquent, ses fonctions ne sont pas automatiquement reconnues par le moteur PHP lors de la compilation du code. Comme pour l’objet PDO, il faut commencer par renseigner l'extension GD au serveur.

Activation de la librairie GD

L'extension GD est prise en charge à partir de PHP4.3. Pour l'activer il faut la déclarer sous forme d'extension dans le fichier php.ini comme ceci:
extension=php_gd2.dll
Si vous travaillez sur Linux, la déclaration devient extension=gd.so, bien qu'elle est activée par défaut dans les distributions récentes de PHP.
On peut également activer l'extension à la volée à l'aide de la fonction dl(), si le serveur le permet, comme ceci:
<?php
   dl("php_gd2.dll");
?>
Cependant, il est peu recommandé de procéder de cette manière.
Notez qu'on préfère parler de GD2 plutôt que de GD pour sous-entendre la version 2 de la librairie qui propose plus d'améliorations fonctionnelles comme le supports de nouveaux formats d'images.

Tester le fonctionnement de la librairie GD

Dans le paragraphe précédent, nous avons vu comment activer l'extension GD sur le moteur PHP. Cependant, il faut procéder à des tests pour vérifier son bon fonctionnement et en avoir ainsi le cœur net.

Il existe deux façons de vérifier le bon fonctionnement de l'extension à savoir:
  • Exécuter la fonction phpinfo(): cette fonction affiche un tableau qui contient plusieurs paramètres concernant la configuration de PHP sur le serveur. Parmi ces paramètres, on trouve un bloc réservé à la librairie GD. Il suffit de voir si GD support a comme valeur enabled pour juger de son bon fonctionnement.
  • Exécuter la fonction gd_info(): cette fonction est dédiée exclusivement à la librairie GD. Si celle ci est activée alors la fonction gd_info() retourne un tableau associatif qui contient les mêmes entrées du bloc GD retorunées par php_info().

Exemple:
<?php
   foreach(gd_info() as $key => $value)
      echo "$key: <b>$value</b><br />";
?>
Quand j'ai exécuté ce code sur la plate-form de développement que j'utilise, il a donné ceci:
GD Version: bundled (2.0.28 compatible)
FreeType Support: 1
FreeType Linkage: with freetype
T1Lib Support: 1
GIF Read Support: 1
GIF Create Support: 1
JPG Support: 1
PNG Support: 1
WBMP Support: 1
XPM Support:
XBM Support: 1
JIS-mapped Japanese Font Support:
En plus de la version de GD installée sur le serveur, on peut aussi constater les différents formats d'images supportés. Les formats avec la valeur 1 (qui signifie true) sont alors pris en charge par la librairie. Il en existe beaucoup mais nous nous intéresserons surtout aux GIF, JPEG et PNG. D'ailleurs ces trois formats connus sont pris en charge.

Avant de continuer jetons un coup d’œil rapide sur ces trois formats:
  • GIF: est un format de compression d'images très populaire. Les images GIF sont très légères vu que ce format ne supporte qu'un maximum de 256 couleurs et prend en charge la transparence. C'est un format idéal pour les images simples avec peu de nuances comme les logos. Il est aussi idéal pour les animations connues par GIFs annimées.
  • JPEG: C'est le plus connu parmi les formats existants. Le rendu d'une image en format JPEG (ou JPG) est très satisfaisant vu qu'il supporte plus de 16 millions de couleurs. C'est généralement le format de sorti par défaut des appareils d'acquisition d'images comme les appareils photo, webcams, scanners... Le format JPEG ne gère pas la transparence.
  • PNG: Il s'agit d'un format libre de droit. Il regroupe à la fois les avantages des GIF et des JPEG. Il gère la transparence et peut coder les couleurs sur 8 bits (comme les GIF) ou (24 bits) comme les JPEG.