[tuto php] générer des images png dynamiquement grâce à php
Publié par Guiral antoine sur janvier 20, 2008
Vous avez peut être déjà voulu faire des images qui changeraient en fonction d’un paramètre? Par exemple des images pour proposer des statistiques : vous passeriez le pourcentage et le script vous renverrais une image représentant vos données : pour 75%. Eh bien vous pourrez bientôt le faire! Bien sûr ce tutoriel sera juste une base, à vous de réutiliser ce que vous aurez appris pour l’adapter à vos besoin.
- Configurer php : la librairie gd2
Ouvrez votre fichier php.ini et décommentez (enlevez le “;” en début de ligne) la ligne : extension=php_gd2.dll.
- le code!
Tout d’abord il faut indiquer au navigateur le type MIME de ce que va retourner le serveur grâce aux “header” ou “en-tête” HTTP. Ici c’est une image png. Nous allons donc envoyer un header contenant le type et le sous-type : image/png avec php.
<?php
header (”Content-type: image/png”);
Ensuite nous créons l’image avec la fonction imagecreate. Le premier argument est la largeur de l’image, le second est la hauteur.
$image = imagecreate(102,10);
On définit maintenant les différentes couleurs qui seront utilisées par l’image (premier argument) en utilisant imagecolorallocate. La première allocation d’image définit la couleur de fond de l’image.
$gris = imagecolorallocate($image, 199, 200, 199);
$rouge = imagecolorallocate($image, 153,0, 0);
$noir = imagecolorallocate($image, 0, 0, 0);
On va maintenant tracer le cadre noir autour de notre image avec la fonction ImageRectange. Le premier argument est l’image sur laquelle le rectangle va être tracer. Les deux suivant sont les coordonnées de l’angle supérieur gauche (0,0). Les deux suivant, ceux de l’angle inférieur droit (101,9).Nous avons bien une largeur de 102 et une hauteur de 10 : attention à l’origine des repères qui est bien (0,0). Le dernier argument est la couleur. On utilise les variables variables : $couleur vaut “noir” donc ${$couleur} vaudra “$noir” qui est bien la couleur allouée précédemment.
$couleur=”noir”;
ImageRectangle ($image, 0, 0, 101, 9, ${$couleur});
On répéte l’opération à quelques différences près : la fonction utilisée est ImageFilledRectangle qui construit un rectangle plein et non juste les contours. De plus la largeur du rectangle (donc l’abscisse de l’angle inférieur droit) est envoyé en paramètre au script. Donc nous le récupérons avec la variable serveur $_GET['nom_de_largument'].
$couleur=”rouge”;
ImageFilledRectangle ($image, 1, 1, $_GET['len'], 8, ${$couleur});
Il ne reste plus qu’à renvoyer l’image au navigateur (c’est à dire la sortie standard dans notre cas) grâce à imagepng. Puis à libérer les ressources avec imagedestroy.
imagepng($image);
imagedestroy( $img );
?>
Ca y est! Vous pouvez utiliser votre image en indiquant, dans l’attribut src de la balise html, l’url de votre fichier avec en argument votre pourcentage. Par exemple : <img src=”http://www.e-caveavin.com/cv/tuto/img_stat.php?len=75″ />.
Il existe énormement de fonction pour créer des formes ou du texte avec la librairie gd de php.
N’oubliez pas de poster vos créations!! Et si vous avez des questions comme d’hab’, un ptit commentaire :-p
Publié dans tutoriel | Taggé: creation, design, internet, php, tutoriel, web | 2 Commentaires »