Images dynamiques avec PHP
Transcription
Images dynamiques avec PHP
Images dynamiques avec PHP images dynamiques en PHP ● Principe ● Exemple ● TD Principe L'idée est de pouvoir générer le contenu d'une image en fonction de données fournies par un agent externe (utilisateur, base de données, ...). L'extension GD de PHP permet de faire cela. Il suffit de remplacer la valeur du champ src d'une balise HTML IMG par le nom de la page php qui doit générer l'image. Principe <HTML><BODY> <IMG src="maBelleImage.jpg"> </BODY></HTML> deviendra: <HTML><BODY> <IMG src="maPageJpgDyna.php"> </BODY></HTML> Principe La création dynamique de l'image se déroule en minimum 4 étapes: 1) Création de l'image (→ dimensions) 2) Allocation d'une couleur de fond 3) Envoi de l'en-tête indiquant le type de l'image (jpg, png, …) 4) Envoi des données de l'image. Exemple Création de l'image $image = imageCreate(640,480); Allocation d'une couleur de fond $bgColor=imagecolorallocate($image,0,0,0); Envoi de l'en-tête header('Content-type: image/png'); Envoi des données de l'image. imagepng($image); Exemple Le système de coordonnées est le suivant: L'origine (0,0) est le coin en haut à gauche de l'image. Pour utiliser une couleur, il faut la définir avant avec imagecolorallocate. Exemple Il est possible de dessiner toute sorte de formes: ● rectangle (vide ou plein) imagerectangle / imagefilledrectangle cercle, ellipse (vide ou plein) imageellipse / imagefilledellipse ● polygone (vide ou plein) imagepolygon / imagefilledpolygon ● camembert (vide ou plein) imagearc / imagefilledarc ● Exemple ligne imageline ● du texte horizontal imagestring ● du texte vertical imagestringup ● TD Générer une image à partir d'un formulaire. formulaire.html données traitement.php image données imgDyna.php TD formulaire.html <html><body> <FORM action="traitement.php" method="POST"> nb vehicules etage 1 : <INPUT type="text" name="nb1"><br> nb vehicules etage 2 : <INPUT type="text" name="nb2"><br> nb vehicules etage 3 : <INPUT type="text" name="nb3"><br> nb vehicules max par etage : <INPUT type="text" name="nbMax"><br> <INPUT type="submit"> </FORM> TD traitement.php <html><body> taux de remplissage du parking par étage <IMG SRC="imgDyna.php"> </body></html> TD traitement.php <html><body> taux de remplissage du parking par étage <?php $donnees="?nb1=".$_POST["nb1"]."&nb2=". $_POST["nb2"]."&nb3=".$_POST["nb3"]."&nbMax=". $_POST["nbMax"]; ?> <IMG SRC="imgDyna.php<?php echo $donnees;?>"> </body></html> traitement.php <html><body> taux de remplissage du parking par étage <IMG SRC="imgDyna.php?nb1=12&nb2=15&nb3=7&nbMax=20"> </body></html> TD imgDyna.php <?php $nb1 = $_GET["nb1"]; $nb2 = $_GET["nb2"]; $nb3 = $_GET["nb3"]; $nbMax = $_GET["nbMax"]; /* dessin du graphique */ ?> Complétez imgDyna.php pour avoir un graphique du taux de remplissage des étages du parking.