IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

La manipulation d'images avec PHP : bibliothèque GD


précédentsommairesuivant

II. On commence !

II-1. Première image

Prenez votre éditeur de fichier favori et allons-y ! Si vous n'avez pas d'éditeur, voici un lien intéressant d'un comparatif des différents éditeurs. Créez le fichier 01_first_image.php. Il existe plusieurs fonctions pour créer une image, cela dépend de ce que vous voulez faire. Nous n'allons en voir que deux. La première est imagecreate. Cette fonction crée une image à palette. Pour vous donner une idée, une image à palette est comme une image gif : elle est limitée à un maximum de 255 couleurs avec un canal alpha (transparence). C'est donc une image plus légère, mais moins belle. Nous n'allons pas nous intéresser à cette fonction, car elle produit des images pas très jolies. Nous allons donc voir imagecreatetruecolor qui crée une image en vraies couleurs (24 bits). Pour utiliser cette fonction, c'est simple.

01_first_image.php
Sélectionnez
<?php
$x = 50; //largeur de mon image en PIXELS uniquement !
$y = 100; //hauteur de mon image en PIXELS uniquement !

/* on crée l'image en vraies couleurs avec une largeur de 50 pixels et une hauteur de 100 pixels */
$image = imagecreatetruecolor($x,$y);
imagepng($image); //renvoie une image sous format png
?>

Il est obligatoire d'attribuer le résultat de imagecreatetruecolor à une variable, sans quoi on ne pourra plus accéder à l'image. J'utilise ici la fonction imagepng que nous n'avons pas encore vue : elle sert à afficher une image au format png. Maintenant, appelez votre fichier dans votre navigateur.

II-2. Zut, on a oublié quelque chose ! Les headers

Mais que se passe-t-il ? Aucune image n'est affichée, mais seulement un texte bizarre. C'est normal. C'est une erreur que l'on rencontre souvent quand on commence avec GD, je voulais vous la faire voir. Votre navigateur ne sait pas que le fichier qu'il doit afficher est une image au format png. Il faut lui dire en utilisant la fonction header de PHP. On a plusieurs headers (ou en-têtes) disponibles pour les images.

 
Sélectionnez
header("Content-type: image/png"); //format png
header("Content-type: image/jpeg"); //format jpg
header("Content-type: image/gif"); //format gif
header("Content-type: image/psd"); //format psd *
header("Content-type: image/bmp"); //format bmp
header("Content-type: image/tiff"); //format tiff *
header("Content-type: image/jp2"); //format jp2 *
header("Content-type: image/iff"); //format iff *
header("Content-type: image/vnd.wap.wbmp"); //format wbmp *
header("Content-type: image/xbm"); 
header("Content-type: application/x-shockwave-flash"); //animation flash *

* Les bibliothèques correspondantes doivent être installées.

II-3. Correction du code

02_first_image.php
Sélectionnez
<?php
header("Content-type: image/png"); //la ligne qui change tout !
$x = 50; //largeur de mon image en PIXELS uniquement !
$y = 100; //hauteur de mon image en PIXELS uniquement !

/* on crée l'image en vraies couleurs avec une largeur de 50 pixels et une hauteur de 100 pixels */
$image = imagecreatetruecolor($x,$y);
imagepng($image); //renvoie une image sous format png
imagedestroy($image); //détruit l'image, libérant ainsi de la mémoire
?>

La fonction imagedestroy prend en argument la variable contenant l'image. Pour faire compliqué, on choisira $image comme nom de variable :). La fonction détruit l'image en mémoire, libérant ainsi de la place. Cette fonction est à exécuter en dernier dans le script sinon vous risquez d'avoir un petit carré avec une croix rouge sous IE ou « L'image http://localhost/02_first_image.php ne peut être affichée, car elle contient des erreurs » si vous êtes sous Firefox. Utilisez imagedestroy, votre serveur ne pourra que mieux se porter.
En visualisant à nouveau le fichier dans votre navigateur, vous devriez voir un rectangle noir. En effet, GD attribue automatiquement la couleur noire sur toute l'image si rien ne dit le contraire (une fonction par exemple).

II-4. Enregistrer une image

On peut afficher une image en GD, c'est son rôle après tout, mais on peut aussi enregistrer une image. Voici la liste des fonctions permettant d'afficher, enregistrer des images.

 
Sélectionnez
imagepng($image);
imagejpeg($image);
imagegd($image);
imagegd2($image);
imagegif($image);
imagewbmp($image);
imagexbm($image);

Toutes ces fonctions peuvent prendre un deuxième argument. C'est un chemin vers un fichier dans lequel sera enregistrée l'image. Vous devez avoir les droits d'écriture dans le répertoire : GD ne sait pas changer les droits tout seul : ça deviendrait vite la pagaille si GD en était capable. Exemple d'utilisation :

 
Sélectionnez
<?php
$file = '/images/mon_image.png';
imagepng($image, $file); //enregistre l'image dans le répertoire images à la racine du site.
?>

Heureusement, GD ne s'arrête pas là !


précédentsommairesuivant

Copyright © 2010 Michaël Todorovic. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.