Créer une image avec GD2

La librairie gd2, assez courante sur les serveurs mutualisés, est gratuite et open source. Elle permet de manipuler des images (les réduire, opérer des rotations) et d’en créer à partir de rien, avec des fonctions.
- Voir la documentation de gd2, avec de nombreux exemples

Précédent | 3/14 | Suivant

Créer une image avec GD2

Voici un code commenté, qui crée une image directement dans le navigatuer, ce qui signifie qu’elle n’est même pas écrite sur le serveur qui la crée, elle est directement décrite au navigateur.

<?php
header("Content-type: image/png"); // on déclare que ce qui suit est une image

// on crée une image au format
$image = imagecreatetruecolor(600, 600);

// on crée la couleur de fond
$bg = imagecolorallocate($image, 0,0,0);

// on remplit le fond
imagefill($image, 0, 0, $bg);

// on définit une couleur pour la ligne oblique
$linecolor = imagecolorallocate($image,130, 245, 249);

// on definit une couleur pour les lignes verticales
$linecolor2 = imagecolorallocate($image,240, 120, 249);

// on dessine la ligne oblique
imageline($image, 0,0,600,600,$linecolor);

// on dessine les lignes verticales avec une boucle
for ($lx=1;$lx<60;$lx++){
imageline($image, $lx*10, 20, $lx*10, 580, $linecolor2);
}

// on "sort" l'image
imagepng($image);

// on détruit l'objet sinon on va saturer la mémoire du serveur
imagedestroy($image);

?>

Variante avec écriture d’un fichier

Ici, on va créer un fichier, le stocker sur le serveur. Il faut donc, après l’avoir créé, fabriquer la balise html qui va l’afficher dans la page html, car on peut imaginer créer une image avec php et gd2 et afficher juste un texte qui dit que ça a marché...

Remarquer que :
- On ne retrouve pas le header du premier script
- imagepng($image) devient imagepng($image,"image.png")
- On doit donner un nom comme deuxième paramètre de imagepng
- L’endroit où l’on sauve doit être ouvert en écriture (chmod 777)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Fabriquer une image et la sauver</title>
</head>
<body>

<?php

// on crée une image au format
$image = imagecreatetruecolor(600, 600);

// on crée la couleur de fond
$bg = imagecolorallocate($image, 0,0,0);

// on remplit le fond
imagefill($image, 0, 0, $bg);

// on définit une couleur pour la ligne oblique
$linecolor = imagecolorallocate($image,130, 245, 249);

// on definit une couleur pour les cercles
$green = imagecolorallocate($image,0, 255, 0);

// on dessine la ligne oblique
imageline($image, 0,0,600,600,$linecolor);

// on dessine les arcs avec deux boucles
for ($ly=1;$ly<60;$ly++){
        for ($lx=1;$lx<60;$lx++){
                imagearc($image, $lx*10, $ly *10, 10, 10, 0, 180, $green);
        }
}

// on "sort" l'image en ajoutant son nom comme parametre supplémentaire
imagepng($image,"image.png");

// on détruit l'objet sinon on va saturer la mémoire du serveur
imagedestroy($image);

?>

<img src="image.png" />

</body>
</html>

Autres fonctions

On peut aussi comme évoqué manipuler des images, créer d’autres format (gif et jpeg), afficher des textes. Encore une fois, lire la documentation sur la librairie gd2