Cyril Rabat


Génération d'images en PHP

 10/11/2016     16/11/2017      Programmation PHP      Programmation client/serveur      Approche par composants   

Introduction à GD pour générer des images en PHP

   Cet article présente comment utiliser la bibliothèque GD en PHP pour générer des images.

Mots-clefs :   PHP     GD   

Archive contenant tous les scripts de l'article :

 images.zip

Vérifications sur GD

GD étant une bibliothèque PHP, elle doit être activée (via le PHP.ini, ou bien directement via l'interface graphique avec l'utilisation de Wamp ou de UWamp). Pour vérifier qu'elle est bien activée, le script suivant affiche la configuration de GD :

<!DOCTYPE html>
<html lang="fr">
    <head>
        <title>Affichage de la configuration de GD</title>
        <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
        <meta name="description" content="Test de GD"/>
        <meta name="author" content="Cyril Rabat"/>
    </head>
    <body>
        <pre>
<?php
if(function_exists("gd_info")) {
    print_r(gd_info());
}
else {
    echo "GD non activé.";
}
?>
        </pre>
    </body>
</html>

 Télécharger le fichier

Génération d'une image

Le script PHP suivant permet de générer une image à l'aide de GD. Ici, l'image contient simplement un texte qui est centré sur l'image et entouré par un rectangle. Les dimensions de l'image sont spécifiées en GET (par défaut, l'image est de 300 par 300).

<?php
// Constantes
define("TEXTE", "Test de GD");            // Texte affiché
define("LARGEUR", 300);                   // Largeur par défaut de l'image
define("HAUTEUR", 300);                   // Hauteur par défaut de l'image
define("POLICE", 5);                      // Police pour l'écriture (1 à 5)
 
// Récupération de la largeur et de la hauteur envoyées au script via la méthode GET
if(isset($_GET['largeur']))
    $largeur = intval($_GET['largeur']);
else
    $largeur = LARGEUR;
if(isset($_GET['hauteur']))
    $hauteur = intval($_GET['hauteur']);
else
    $hauteur = HAUTEUR;
 
// Création de l'image et de la couleur
$image = imagecreatetruecolor($largeur, $hauteur);
$couleurTexte = imagecolorallocate($image, 255, 255, 255);
$couleurLigne = imagecolorallocate($image, 255, 0, 0);
 
// Ecriture du texte + cadre
$hauteurTexte = imagefontheight(POLICE);
$largeurTexte = imagefontwidth(POLICE) * strlen(TEXTE);
imagestring($image , POLICE, ($largeur - $largeurTexte) /2, ($hauteur - $hauteurTexte) /2, TEXTE , $couleurTexte);
imagerectangle($image, 
              ($largeur - $largeurTexte) /2 - 2,
              ($hauteur - $hauteurTexte) /2 - 2,
              ($largeur - $largeurTexte) /2 + imagefontwidth(POLICE) * strlen(TEXTE) + 2,
              ($hauteur - $hauteurTexte) /2 + imagefontheight(POLICE) + 2,
              $couleurLigne);
 
// Génération de l'image
header("Content-type: image/jpeg");
imagepng($image);
?>

 Télécharger le fichier

Utilisation de l'image générée dans un document HTML

Le script generateur.php retourne directement le contenu d'une image. Aussi, il est possible de spécifier le nom de ce script directement comme source dans une balise img en HTML.

<html lang="fr">
    <head>
        <title>Génération d'une image avec GD</title>
        <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
        <meta name="description" content="Image en GD"/>
        <meta name="author" content="Cyril Rabat"/>
    </head>
    <body>
        <h1>Exemple d'utilisation de GD</h1>
 
        <p>Voici une image générée en PHP avec la bibliothèque GD :</p>
 
        <img src='generateur.php?largeur=300&hauteur=200'/>    
    </body>
</html>

 Télécharger le fichier

Exécution

Pour exécuter les différents codes, il faut utiliser un serveur Web (par exemple Wamp ou UWamp, sous Windows). Les fichiers doivent être placés dans le répertoire www : on suppose ici qu'ils sont placés dans un sous-répertoire images. Une fois le serveur exécuté, on accède à la page  http://localhost/images/, suivi par le nom du script.

Articles connexes


Version de cette page Mercredi 16 Décembre 2015

© Cyril Rabat 2016

Connexion

Mot de passe perdu

Dernières nouvelles

Aucune pour le moment

Contact

Courriel :
cyril.rabat [at] univ-reims.fr

Téléphone :
+33-326-91-33-81

Fax :
+33-326-91-33-97

Facebook :
lien Facebook direct