Bibliothèque GD
ancien -->
Installer la bibliothèque gd
Pour vérifier si la bibliothèque est bien installé sur votre système, ajoutez la fonction phpinfo();
dans un programme php et ensuite vérifiez la présence de la bibliothèque.
SI celle-ci n'est PAS installée :
- sudo apt install php-gd
- sudo /etc/init.d/apache2 restart
<?php
phpinfo();
?>
Si la bibliothèque est installée vous devriez trouver une section comme celle-ci (CTRL-F gd) :
gd
GD Support enabled
GD Version bundled (2.1.0 compatible)
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.6.2
GIF Read Support enabled
GIF Create Support enabled
JPEG Support enabled
libJPEG Version 9 compatible
PNG Support enabled
libPNG Version 1.5.26
WBMP Support enabled
XPM Support enabled
libXpm Version 30411
XBM Support enabled
WebP Support enabled
Résultat -->
<IMG SRC="
http://travaux-pratiques.net/fichiers/graphisme.png" width="85%">
Éléments de documentation :
Quelques exemples
Choisir une image et l'envoyer à l'affichage avec getimagesize() -->
getimagesize
<?php
list($width, $height, $type, $attr) = getimagesize("images/chat01.jpg");
echo "<img src=\"images/chat01.jpg\" $attr alt=\"Exemple avec getimagesize()\" />";
echo("width = " . $width);
echo("height = " . $height);
?>
La même chose, mais on affiche les informations sur l'image -->
getimagesize2
<?php
list($width, $height, $type, $attr) = getimagesize("images/chat01.jpg",$info);
echo("<BR> ---------------->");
// print_r ($list[$width]);
echo ("<BR><BR>");
echo ("Variable largeur = " . $width . "<BR>");
echo ("Variable hauteur = " . $height . "<BR>");
echo ("Variable type = " . $type . "<BR>");
echo ("Variable attr = " . $attr . "<BR>");
echo ("<BR><BR>");
echo "<img src=\"images/chat01.jpg\" $attr alt=\"Exemple avec getimagesize()\" />";
?>
Note:
- Cette fonction ne nécessite pas la bibliothèque GD.
carre-rouge
Note :
- Attention de ne mettre aucun caractère avant le code PHP, même pas un espace !
<?php
// on spécifie le type de document que l'on va créer (ici une image au format PNG
header ("Content-type: image/png");
// on dessine une image vide de 200 pixels sur 100
$image = @ImageCreate (200, 100) or die ("Erreur lors de la création de l'image");
// on applique à cette image une couleur de fond, les couleurs étant au format RVB,
// on aura donc ici une couleur rouge
$couleur_fond = ImageColorAllocate ($image, 255, 0, 0);
// on dessine notre image PNG
ImagePng ($image);
?>
Bonjour les BTS SIO
<?php
// on spécifie le type de document que l'on va créer (ici une image au format PNG
header ("Content-type: image/png");
// on dessine une image vide de 300 pixels sur 100
$image = @ImageCreate (300, 100) or die ("Erreur lors de la création de l'image");
// il semble que la première couleur définie est la couleur de fond de l'image.
$couleur_fond = ImageColorAllocate ($image, 0, 0, 255);
$orange = imagecolorallocate($image, 255, 128, 0);
$bleu = imagecolorallocate($image, 0, 0, 255);
$bleuclair = imagecolorallocate($image, 156, 227, 254);
$noir = imagecolorallocate($image, 0, 0, 0);
$blanc = imagecolorallocate($image, 255, 255, 255);
imagestring($image, 4, 35, 15, "Bonjour les BTS SIO !", $blanc);
// on applique à cette image une couleur de fond, les couleurs étant au format RVB,
// on aura donc ici une couleur bleu
// on dessine notre image PNG
ImagePng ($image);
?>
Documentation imagestring() :
- imagestring().
- imagestring($image, 4, 35, 20, "Bonjour les BTS SIO !", $blanc);
- Le 4 est la taille des caractères de 1 à 5
- 35 si on augmente va déplacer le texte vers la droite.
- 20 hauteur si on augmente le texte va descendre.
- $blanc --> Un identificateur de couleur créé avec imagecolorallocate().
Graphique
Remarque IMPORTANTE :
- pour que le script trouve la police verdana, vous devrez placer la police verdana dans le répertoire fonts/
<?php
// on spécifie le type d'image que l'on va créer, ici ce sera une image au format PNG
header ("Content-type: image/png");
// on définit la largeur et la hauteur de notre image
$largeur = 550;
$hauteur = 300;
// on crée une ressource pour notre image qui aura comme largeur $largeur et $hauteur comme hauteur
// (on place également un or die si la création se passait mal afin d'avoir un petit message d'alerte)
$im = @ImageCreate ($largeur, $hauteur) or die ("Erreur lors de la création de l'image");
// on place tout d'abord la couleur blanche dans notre table des couleurs
// (je vous rappelle donc que le blanc sera notre couleur de fond pour cette image).
$blanc = ImageColorAllocate ($im, 255, 255, 255);
// on place aussi le noir dans notre palette, ainsi qu'un bleu foncé et un bleu clair
$noir = ImageColorAllocate ($im, 0, 0, 0);
$bleu_fonce = ImageColorAllocate ($im, 75, 130, 195);
$bleu_clair = ImageColorAllocate ($im, 95, 160, 240);
// on définit un tableau contenant le nombre de page vues par mois : par exemple, on suppose que 1500 pages du site ont été vues en janvier, 2450 en février, etc... Bien sur, pour que ce script soit vraiment valides, vous n'allez pas déclarer ce tableau, car sinon, les bâtons seront toujours les mêmes :) Vous allez plutôt effectuer une requête SQL sur votre base de données permettant de récupérer le nombre de pages vues de votre site par mois. Ensuite, il suffira d'appeler le script avec ces 12 paramètres dans votre page html
// (en faisant par exemple : <img src="./images/stats_year.php?visite_par_mois[1]=1500.......">)
$visite_par_mois[1]=1500;
$visite_par_mois[2]=2450;
$visite_par_mois[3]=800;
$visite_par_mois[4]=1780;
$visite_par_mois[5]=1900;
$visite_par_mois[6]=2450;
$visite_par_mois[7]=1684;
$visite_par_mois[8]=1845;
$visite_par_mois[9]=3450;
$visite_par_mois[10]=980;
$visite_par_mois[11]=1234;
$visite_par_mois[12]=500;
// on calcule le nombre de pages vues sur l'année
$max_visite = max($visite_par_mois);
// on dessine un trait horizontal pour représenter l'axe du temps
ImageLine ($im, 20, $hauteur-40, $largeur-15, $hauteur-40, $noir);
// on affiche le numéro des 12 mois
for ($i=1; $i<=12; $i++) {
if ($i==1) {
ImageString ($im, 2, 42, $hauteur-38, $i, $noir);
}
else {
ImageString ($im, 2, ($i)*42, $hauteur-38, $i, $noir);
}
}
// on dessine un trait vertical pour représenter le nombre de pages vues
ImageLine ($im, 20, 30, 20, $hauteur-40, $noir);
// on affiche les legendes sur les deux axes ainsi que différents textes
// (note : pour que le script trouve la police verdana,
// vous devrez placer la police verdana dans un repertoire /fonts/)
imagettftext($im, 14, 0, $largeur-70, $hauteur-10, $noir, "./fonts/verdana.ttf", "Mois");
imagettftext($im, 14, 0, 10, 20, $noir, "./fonts/verdana.ttf", "Nb. de pages vues");
imagettftext($im, 14, 0, $largeur - 300, 20, $noir, "./fonts/verdana.ttf", "Statistiques pour l'année 2003");
// on parcourt les douze mois de l'année
for ($mois=1; $mois <= 12; $mois++) {
if ($visite_par_mois[$mois] != "0") {
// on calcule la hauteur du baton
$hauteurImageRectangle = ceil(((($visite_par_mois[$mois])*($hauteur-50))/$max_visite));
if ($mois=="1") {
// si le mois est janvier, on affiche notre premier baton
// on affiche le premier baton noir
ImageFilledRectangle ($im, 42, $hauteur-$hauteurImageRectangle, 42+14, $hauteur-41, $noir);
// on affiche le second baton, bleu foncé, qui sera un peu plus petit que le noir afin de recouvrir une partie du noir
ImageFilledRectangle ($im, 44, $hauteur-$hauteurImageRectangle+2, 42+12, $hauteur-41-1, $bleu_fonce);
// on affiche le dernier baton, bleu clair, qui sera un peu plus petit que le bleu foncé afin de recouvrir une partie du bleu foncé (on obtiendra ainsi un effet de dégradé)
ImageFilledRectangle ($im, 48, $hauteur-$hauteurImageRectangle+2, 42+8, $hauteur-41-1, $bleu_clair);
}
else {
// si le mois est different de janvier, on affiche les autres batons
ImageFilledRectangle ($im, ($mois)*42, $hauteur-$hauteurImageRectangle, ($mois)*42+14, $hauteur-41, $noir);
ImageFilledRectangle ($im, ($mois)*42+2, $hauteur-$hauteurImageRectangle+2, ($mois)*42+12, $hauteur-41-1, $bleu_fonce);
ImageFilledRectangle ($im, ($mois)*42+6, $hauteur-$hauteurImageRectangle+2, ($mois)*42+8, $hauteur-41-1, $bleu_clair);
}
}
}
// on dessine le tout
Imagepng ($im);
?>
Pour terminer un joli dessin dont vous trouverez la source sur
cette page.
Triangle
Pour plus d'informations consultez
cette page sur le triangle de Sierpiński.
Documentation
Regardez la documentation générale -->
https://www.php.net/manual/fr/book.image.php
La documentation pour tracer un trait --> la fonction imageline
https://www.php.net/manual/fr/book.image.php
Développez.com - La manipulation d'images avec PHP : bibliothèque GD
https://www.lephpfacile.com/cours/22-la-librairie-gd
http://xandra.vip.free.fr/mesSITE/traitementimgphp/librairie_graphique/Utilisation%20de%20la%20librairie%20graphique.html
Vous pouvez rechercher le manuel d'une fonction en remplissant le cadre de recherche en haut à droite de la page du :
"manuel de PHP"
Problème d'installation de GD
D'après cette page -> https://forum.raspberry-pi.fr/t/gd-graphic-library/8980/3
php -ver
sudo apt install php7.3-gd
ou
sudo apt install php7.4-gd
sudo apt install php-gd
sudo /etc/init.d/apache2 restart
Pour visualiser les erreurs en PHP
Aller dans /opt/lampp/etc
Dans le fichier
php.ini
Modifier la ligne
display_errors=Off par
display_errors=On
N'oubliez pas de relancer xampp !!