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>