Images
Pré-requis
importants
Ceci concerne les
versions de PHP avant la 4.2.3 et EasyPHP 1.6: certaines fonctions comme
gd_info() ou
encore imagecreatetruetype() ne sont pas toujours disponibles car PHP fait
appel à une
bibliothèque externe
appelée GD2. Pour
les version 4.2.3 et au-delà
on trouve des
patches à
l'adresse http://www.boutell.com/gd/. Avant
ces versions, la version GD linkée avec PHP est la
.
Ceci concerne les
utilisateurs de PHP 4.2.3 et + et EasyPHP 1.7 sur Windows : la configuration
par défaut de
EasyPHP 1.7 n'inclut pas le support des images. Pour cela il faut modifier le
fichier
PHP.INI en
retirant le commentaire de
:
extension=php_gd2.dll
Créer une image
Types possibles
Il faut tout d'abord
choisir le type de l'image que vous souhaitez créer. Pour cela on peut tester
quels
types PHP peut
générer avec la fonction imagetypes() et ses constantes associées :
• IMG_PNG : format PNG
• IMG_JPG : format JPEG
• IMG_GIF : format GIF
• IMG_WBMP : format Windows Bitmap BMP
if (imagetypes() &
IMG_PNG) {
echo "Le type PNG est supporté";
Puis au début du
script, on envoie un header spécifiant le type d'image :
S. ROHAUT Cours
Programmation PHP Page 67/93header ("Content-type: image/png"); // ou
image/gif ou image/jpeg
Création
Nouvelle
image dynamique
Et enfin on créé
une image avec la fonction imagecreate() (basée sur une table de couleurs
indexée)
ou imagecreatetruecolor() (en
truecolor) avec comme
paramètres la largeur
et la hauteur.
La
seconde est
conseillée par la documentation PHP. Les fonctions retournent une ressource
identifiant
l'image. Par
défaut l'image est noire.
$img=@createimage(100,100) or
die("Votre PHP ne supporte pas les images");
Récupération d'une image existante
PHP peut charger
une image existante au lieu de la créer de toutes pièces. Dans ce cas l'image
est
chargée depuis un
fichier et on peut ensuite la retravailler comme on le souhaite. On peut
utiliser les
fonctions :
• imagecreatefromgif() : charge
une image GIF
• imagecreatefromjpeg() : charge
une image JPEG
• imagecreatefrompng() : charge
une image PNG
• imagecreatefromstring() : charge
une image depuis une chaîne de texte (par exemple un champ)
Publication
Enfin, on publie l'image
avec les fonctions imagexxx(). Si cette fonction est utilisée sans paramètre,
l'image créée est
redirigée vers la sortie standard. On peut toutefois préciser comme paramètre
un
nom de fichier. Dans
ce cas, l'image est sauvée sur disque au format spécifié.
• imagepng() : créé une
image au format PNG
• imagegif() : créé une
image au format GIF
• imagejpeg() : créé une
image au format JPEG
Une fois l'image crée,
on peut la supprimer avec imagedestroy() ce qui la décharge de la mémoire.
Voici donc le code
d'une page PHP image.php retournant une image :
header ("Content-type:
image/png");
$img=@imagecreatetruecolor (100,
50) or die ("Impossible de crée un flux d'image
GD");
/* ICI ON PLACE LES COMMANDES
DE DESSIN OU MANIPULATION
*/
imagepng ($img);
imagedestroy ($img);
S. ROHAUT Cours
Programmation PHP Page 68/9314.2.4 Chargement via une autre page
Pour appeler cette
image dynamique depuis une page HTML ou PHP il suffit de la placer dans une
balise IMG :
<img src="image.php">
Travailler
sur les Images
Récupérer
des informations
La fonction
getimagesize() permet de récupérer des informations sur une image si on lui
passe un
nom de fichier (pas
de ressource image). Elle retourne un tableau indexé.
list($width,$height,$type,$attr)=getimagesize("toto.gif");
• width : largeur x
• height : hauteur y
• type : 1 = GIF, 2 = JPG, 3 = PNG, 5 = PSD, 6 = BMP,
7 = TIFF (Ordre des octets Intel), 8
=
TIFF (Ordre des octets Motorola), 9 = JPC, 10 =
JP2, 11 = JPX, 12 = JB2, 13 = SWC, 14 = IFF
• attr: chaine width/height pour HTML
Si on travaille
sur une image qu'on a créé nous-même
:
• imagesx() : largeur x de l'image
• imagesy() : hauteur de l'image
Les couleurs
Il n'est pas
possible de voir toutes les fonctions
cependant une chose est à retenir : la
notion de
palette indexée
(createimage()) et la notion de
truetype. Dans le premier
cas les couleurs
sont
indexées via un
numéro. Dans le second cas, la couleur est une composante RVB.
La fonction
imagecolorallocate() permet de définir une couleur qui sera utilisée pour une
image. Le
premier paramètre
est le ressource de l'image, les trois autres les niveaux de rouge, vert et
bleu de la
couleur.
ATTENTION : Avec une image créée
avec createimage(), la palette est indexée et le premier
index est la couleur du fond. Donc : un
premier appel à imagecolorallocate() dans ce cas
modifie la couleur
du fond.
$white=imagecolorallocate($img,255,255,255);
La fonction
imagecolorat() retourne la valeur exacte (soit l'index de la palette, soit un
entier RVB)
du point aux
coordonnées x/y de l'image.
S. ROHAUT Cours
Programmation PHP Page 69/93$color=imagecolorextact($img,50,50);
La fonction
imagecolortransparent() permet de définir la couleur de transparence d'une
image dont
la palette
est indexée. Le
premier paramètre est
la ressource de l'image
OBLIGATOIREMENT créée
avec imagecreate(), le
second une valeur
retournée par
imagecolorallocate().
La fonction
imagecolorstotal() retourne le nombre total de couleurs utilisées pour l'image
donnée.
Dessin
Remplissage
On utilise la
fonction imagefill()
:
$background=imagecolorallocate ($img,255,255,255);
ImageFill($img,0,0,$background);
La fonction
imagefilltoborder() permet un
remplissage d'une zone
délimitée par une
couleur
donnée. Dans ce cas
les deux derniers paramètres sont
la couleur de la bordure et la
couleur de
remplissage.
Point
On utilise
imagesetpixel() :
$green=imagecolorallocate ($img,0,255,0);
Imagesetpixel($img,2,2,$green);
Ligne
On utilise
imageline() :
imageline($img, 10,10,30,40,$blue);
Rectangle
On utilise imagerectangle() pour
un rectangle simple, imagefilledrectangle() pour
un rectangle
rempli.
$blue=ImageColorAllocate($img,0,0,255);
imagerectangle($img, 10,10,30,40,$blue);
imagefilledrectangle($img,12,12,27,37,$green);
Cercle, ellipse
On utilise
imageellipse() ou imagefilledellipse(). Attention les deux premiers paramètres
sont les
coordonnées du
centre de l'ellipse, les deux autres la largeur et la hauteur de l'ellipse.
imageellipse ($img,
50, 50,30, 20, $red);
On peut aussi
faire des arcs de cercles avec les fonctions imagearc()
et imagefilledarc() : Juste
S. ROHAUT Cours
Programmation PHP Page 70/93avant la couleur on précise le début et la fin de l'arc
en degrés (de 0 à 360).
Polygones
On utilise les
fonctions imagepolygone() et imagefilledpolygone(). Les sommets du polygone
sont
définis dans un
tableau : Tab[0]=x0, Tab[1]=y0, Tab[1]=x1, Tab[2]=y1, ...
On doit aussi
préciser le nombre de sommets.
imagepolygon($img, array (0, 0,100, 200, 300, 200),3,
$blue);
Texte simple
On utilise imagestring() :
imagestring($img, 1, 5, 5, "Une simple chaîne de texte", $text_color);
Le second
paramètre est le numéro de police par défaut de la page actuelle ou du
navigateur.
Aucun commentaire:
Enregistrer un commentaire