Traitement d`image Créer une image en mémoire, soit vierge

Transcription

Traitement d`image Créer une image en mémoire, soit vierge
Traitement d'image
Le principe est le suivant :




Créer une image en mémoire, soit vierge
(imagecreate), soit à partir d'un fichier image
(imagecreatefromxxx où xxx = format)
Utiliser les diverses fonctions pour dessiner, écrire dans
cette image en mémoire (imagecolorallocate,
imagestring, imageellipse, imagefill,
imagerectangle etc…)
enregistrer cette image mémoire sur disque ou l'envoyer
directement au navigateur
détruire l'image en mémoire (imagedestroy)
Traitement d'images
Syntaxe de imagecreate :
$Identifiant = imagecreate ( $largeur, $hauteur);
imagecreate prend en argument 2 entiers indiquant la largeur et la
hauteur. Renvoie un identifiant sur une image en mémoire dont le fond
est blanc.
On peut également créer une image à partir d'un fichier
$identifiant = imagecreatefromjpeg( "fichier.jpg" );
$identifiant = imagecreatefrompng( "fichier.png" );
$identifiant = imagecreatefromgif( "fichier.gif" );
etc..
exemple
$im = imagecreate ( 200, 50 ); // créer une image de 200*50
Traitement d'images
On "dessine" dans cette image grâce aux nombreuses fonctions
disponibles, toujours en passant comme paramètre l'identifiant de
l'image.
Un paramètre souvent demandé est celui d'un code couleur (entier entre
0 et 255) que l'on peut récupérer grâce à imagecolorallocate :
$codecouleur = imagecolorallocate( $im,
$codeRouge,
$codeVert,
$codeBleu);
Cette fonction ajoute une couleur dans la palette de couleur de l'image
en question. Elle renvoie l'index de cette couleur dans la palette.
Le premier appel à imagecolorallocate définit la couleur de fond de
l'image.
Traitement d'images
Formes géométriques
imageellipse( image, x, y, larg, haut, couleur);
imagepolygon( image, tableauPoint, nombrepoints, couleur);
tableauPoint=array( x0, y0, x1, y1, …)
imagerectangle( image, x1, y1, x2, y2, couleur);
imageline( image, x1, y1, x2, y2, couleur);
imagesetpixel( image, x, y, couleur);
imagefilledellipse( image, x, y, larg, haut, couleur);
imagefilledpolygon( image, tableauPoint, nombrepoints, couleur);
imagefilledrectangle( image, x1, y1, x2, y2, couleur);
Traitement d'images
Dessiner du texte
imagestring(image, fonte, x, y, texte, couleur);
Fonte est un identifiant de fonte (bitmap) chargé avec imageloadfont
ou de fonte prédéfinie : de 1 à 5
Pour écrire avec une fonte TTF :
imagettftext(image, taille, angle, x, y, couleur,
chemin_fonte, texte);
Traitement d'images
Une fois l'image construite, on appelle une des fonctions imagepng,
imagegif, imagjpeg ou imagewbmp selon le format désiré.
imageX(image [, nomfichier]); // X=png, jpeg, gif...
Le paramètre nom de fichier est facultatif. S'il est présent, l'image est
sauvegardée dans le fichier indiqué.
<?php
$im = imagecreate ( 100,50 );
$colfond = imagecolorallocate($im, 168,186,203);
imagefill($im, 10,10,$colfond);
$colrect = imagecolorallocate($im, 58, 47, 128);
imagerectangle ($im, 5, 5, 95, 45,$colrect);
$coltexte = imagecolorallocate($im, 255,255,255);
imagestring ($im, 2, 20,15, "aston", $coltexte);
imagepng($im, "logoaston.png");
imagedestroy($im)
?>
<img src = "logoaston.png">
Demo_logoaston.php
Traitement d'images
Si un nom de fichier n'est pas indiqué, le contenu de l'image est
directement envoyé vers le navigateur.
Ce qui signifie que :

il faut changer l'en-tête HTTP de la page en indiquant le bon type
mime

Ne rien écrire d'autre (pas d'echo, print et autre contenu HTML)
Demo_buildlogo.php
<?php // page
header("Content-type: image/png");
$im = imagecreate ( 100,50 );
//…
imagestring ($im, 2, 20,15, $_GET['texte'], $coltexte);
imagepng($im);
?>
Demo_logo.php
<html><head><title>affichage image</title></head>
<body>
Voici l'image générée :<br>
<img src="buildlogo.php?texte=aston">
</body></html>

Documents pareils