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.

Documents pareils