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