Exercices
Questions à choix multiple

Leçon N° 17 : Création / Manipulation des images

La librairie GD
Formats d'image
Taille d'une image
Créer une image
Modifier les couleurs d'une image existante
Fonctions de dessin d'image
Applications
Fonctions avec polices
Notes de page

La librairie GD

La plupart des fonctions de manipulation d'images nécessitent une librairie supplémentaire qui n'est pas installée par défaut lors de l'installation de php, il s'agit de la librairie GD.
La liste des librairies disponibles se trouve dans la rubrique "dynamic extensions" du fichier \windows\php.ini
Pour installer la librairie GD sous Windows, il suffit en général d'éditer le fichier php.ini et de supprimer le point-virgule devant le nom de la librairie.
(Si vous avez installé Maguma studio, la librairie est déjà activée)

Les formats d'images supportés

Les formats des images que vous pourrez manipuler dépendent de la version de GD que vous installerez, et de toute autre librairie dont GD a besoin pour traîter ces images. Les versions antérieures à la version 1.6 supportent le GIF, (qui était auparavent considéré comme libre de droits) mais pas le PNG.
Pour les versions plus récentes, c'est le contraire.
D'une façon générale, vous pouvez utiliser les fonctions PHP +GD pour créer et manipuler les images aux formats JPEG, PNG et SWF

Taille d'une image

Pour connaître la taille d'une image, on n'a pas besoin de la librairie GB Il suffit d'utiliser la fonction :
array getimagesize ( string $filename [,array imageinfo])
getimagesize()
va déterminer la taille des images de type GIF, JPG, PNG, SWF, PSD ou BMP et en retourner les dimensions, le type d'image, et une chaîne type "height/width", à placer dans une balise HTML ou IMG normale.
    getimagesize() retourne un tableau de 4 éléments :
  1. L'index 0 contient la largeur.
  2. L'index 1 contient la hauteur.
  3. L'index 2 contient le type de l'image : 1 = GIF, 2 = JPG, 3 = PNG, 5 = PSD, 6 = BMP.
  4. L'index 3 contient la chaîne à placer dans les balises HTML : "height=xxx width=xxx".
Exemples avec getimagesize()
Taille d'une image - 1
Nom du fichier : exercises_17/lesson_17_a0_image_size.php
Taille d'une image - 2
Nom du fichier : exercises_17/lesson_17_a1_image_size.php

Création d'un fichier image

Processus de création d'une nouvelle image :
Un fichier image nécessite un header de type particulier, un fichier image PHP ne peut rien faire d'autre que créer une image, il ne peut pas en particulier envoyer de texte au navigateur.
Exemple de fichier pour créer une nouvelle image :

<?php
header("Content-type:image/jpeg"); // on spécifie le header pour que le navigateur ne la prenne pas comme du texte
$myImage=imageCreate(550,550); //Création de l'image avec la taille qu'elle ocupe à l'écran
$myColorYellow = imageColorAllocate($myImage,255,255,0); // On définit sa couleur
imageJpeg($myImage);// On la met au format jpeg
?>
Fonctions de création d'image :
FonctionDescription
ImageCreateCrée une nouvelle image à palette.
imagecreatefromgd2Crée une nouvelle image à partir d?un fichier GD2 ou d?un UR
imagecreatefromgd2partCrée une nouvelle image à partir d?une part de fichier GD2 ou d?un URL
imagecreatefromgdCrée une nouvelle image à partir d?un fichier GD ou URL
imagecreatefromgif Crée une nouvelle image à partir d'un fichier ou d'une URL.
ImageCreateFromJPEG Crée une nouvelle image JPEG à partir d'un fichier ou d'une URL
ImageCreateFromPNG Crée une nouvelle image PNG à partir d'un fichier ou d'une URL
ImageCreateFromStringCrée une image à partir d'une chaîne
ImageCreateFromWBMPCrée une image depuis un fichier WBMP
ImageCreateFromXBMCrée une image à partir d'un fichier XBM
ImageCreateFromXPMCrée une image à partir d'un fichier XPM
ImageCreateTrueColorCrée une nouvelle image en vraies couleurs
Creer une nouvelle image
Nom du fichier : exercises_17/lesson_17_b0_create.php

Modifier les couleurs d'une image existante

Les fonctions relatives au traitement des couleurs sont nombreuses :
FonctionDescription
ImageColorAllocateAlloue une couleur pour une image.
ImageColorAtRetourne l'index de la couleur d'un pixel donné.
ImageColorClosest Retourne l'index de la couleur la plus proche d'une couleur donnée.
ImageColorClosestAlpha Retourne la couleur la plus proche, en tenant compte du canal alpha
imagecolorclosesthwb Retourne l'index de la teinte de la couleur donnée
ImageColorDeAllocate Désalloue une couleur pour une image
ImageColorExactRetourne l'index de la couleur donnée.
ImageColorExactAlphaRetourne l'index d'une couleur avec son canal alpha
ImageColorResolve Retourne l'index de la couleur donnée, ou la plus proche possible.
ImageColorResolveAlpha Retourne un index de couleur ou son alternative la plus proche, y compris le canal alpha
ImageColorSet Change la couleur dans une palette à l'index donné.
ImageColorsForIndexRetourne la couleur associée à un index.
ImageColorsTotalCalcule le nombre de couleurs d'une palette.
ImageColorTransparentDéfinit la couleur transparente
ImageGammaCorrect Applique une correction gamma à l'image
ImageTrueColorToPaletteConvertit une image en vraies couleurs en image à palette
Changer la couleur d'une image
Nom du fichier : exercises_17/lesson_17_c0_change_color.php

Les fonctions de dessin d'image

FonctionDescription
ImageDashedLineDessine une ligne pointillée.
ImageEllipseDessine une ellipse
ImageFillRemplit.
imagefilledarcDessine une ellipse partielle et la remplit
ImageFilledEllipseDessine une ellipse pleine
ImageFilledPolygonDessine un polygone rempli.
ImageFilledRectangleDessine un rectangle rempli.
ImageFillToBorderRemplit avec une région avec une couleur spécifique.
ImageLineDessine une ligne.
ImagePolygonDessine un polygone
ImageRectangleDessine un rectangle.
imagesetbrushModifie la brosse pour le dessin des lignes
ImageSetPixelDessine un pixel.
imagesetstyleSet the style for line drawing
ImageSetThicknessModifie l'épaisseur d'un trait
ImageSetTileModifie l'image utilisée pour le carrelage
ImageStringDessine une chaîne horizontale.
ImageStringUpDessine une chaîne verticale.

Applications

Utilisation de la fonction ImageLine()
Pour utiliser cette fonction il faut auparavant utiliser les fonctions ImageCreate() et ImageColorAllocate de la manière suivante :

  1. ImageCreate()
    $image = ImageCreate($longueur,$hauteur);
    $longueur et $hauteur sont des entiers représentant des distances en pixels.
    Cette fonction permet de créer une image en indiquant sa taille en pixels, un fichier php image génère une seule image et sa taille est définie par la fonction ImageCreate.
  2. ImageColorAllocate()
    $couleur = ImageColorAllocate($image,$rouge,$vert,$bleu);
    où $rouge,$vert,$bleu sont des entiers qui définissent une couleur selon la méthode RVB.
    Cette fonction permet de définir une couleur qui sera utilisée par d?autres fonctions une ou plusieurs fois.
    La première utilisation de la fonction ImageColorAllocate() définie la couleur de fond de l?image. Il faut donc définir une deuxième couleur pour la ligne à tracer :
    $couleur_ligne = ImageColorAllocate($image,$rouge_ligne,$vert_ligne,$bleu_ligne);
  3. Ensuite $image est utilisé en premier argument et $couleur en dernier de la fonction ImageLine() qui comprend en tout 6 arguments.
    ImageLine($image,$abscisse1,$ordonnée1,$abscisse2,$ordonnée2,$couleur_ligne) ;
    $abscisse1,$ordonnée1 sont les coordonnées du premier point
    $abscisse2,$ordonnée2 sont les coordonnées du deuxième point
    Le résultat de cette fonction est une ligne droite entre deux points et de couleur définie par la variable $couleur.
Utilisation de la fonction ImageSetThickness
La fonction ImageSetThickness s'utilise de la mainière suivante :
ImageSetThickness($image,$epaisseur) ;
Où $image est la variable obtenue par la fonction create comme dans l'exemple ci-dessus et $epaisseur est l'épaisseur du trait que l'on souhiate tracer à l'aide de la fonction de dessin voulue (voir le polygone ci-après).

Création d'un polygone (voir exemple ci-après)
Exemple :
Imagepolygon($image,array (0,10, 100,200, 300,200, 400,10),4,$col_poly);
$image : variable obtenue par la fonction create comme dans l'exemple ci-dessus
array(x1,y1, x2,y2...) : les coordonnées des popints du polygone, doivent être à l'intérieur de l'image bien sur
4 : Le nombre de points
$col_poly : la couleur du trait
Polygone
Nom du fichier : exercises_17/lesson_17_f0_polygon.php
Polygone plein
Nom du fichier : exercises_17/lesson_17_g0_rotate.php
Arcs de cercle
Nom du fichier : exercises_17/lesson_17_d0_image_arc.php
Caractères
Nom du fichier : exercises_17/lesson_17_d1_image_char.php
Dessin d'une flèche
Nom du fichier : exercises_17/lesson_17_d2_arrow_h.php
Un logo
Nom du fichier : exercises_17/lesson_17_dessin_e.php
Un autre logo
Nom du fichier : exercises_17/lesson_17_dessin_g.php
Dessin d'une figure dans l'espace
Nom du fichier : exercises_17/lesson_17_dessin_a.php
Un autre dessin dans l'espace
Nom du fichier : exercises_17/lesson_17_dessin_i.php
La terre et la lune...
Nom du fichier : exercises_17/lesson_17_dessin_b.php
Figures coniques dans l'espace
Nom du fichier : exercises_17/lesson_17_dessin_c.php
De l'élipse au cercle..
Nom du fichier : exercises_17/lesson_17_dessin_d.php
Figure géométrique
Nom du fichier : exercises_17/lesson_17_dessin_f.php
Effets plus complexes
Nom du fichier : exercises_17/lesson_17_dessin_h.php
Effets sur une photo
Nom du fichier : exercises_17/lesson_17_photo_01.php
Afficher un texte sur une photo
Nom du fichier : exercises_17/lesson_17_photo_02.php

Les fonctions avec les polices (sous windows seulement)

FonctionDescription
ImagePSBBox Retourne le rectangle entourant un texte et dessiné avec une police PostScript Type1.
imagepscopyfont Fait une copie d'une police chargée pour modification ultérieure.
ImagePSEncodeFont Change le codage vectoriel d'un caractère dans une police.
ImagePsExtendFont Etend ou condense une police de caractères
ImagePSFreeFont Libère la mémoire occupée par une police PostScript Type 1.
ImagePSLoadFontCharge une police PostScript Type 1 depuis un fichier.
ImagePsSlantFont Incline une police de caractères
ImagePSTextDessine un texte sur une image avec une police PostScript Type1
ImageTTFBBox Retourne le rectangle entourant un texte et dessiné avec une police TrueType.
ImageTTFTextDessine un texte avec une police TrueType.
Faire varier la taille des caractères
Nom du fichier : exercises_17/lesson_17_e0_car_size.php

Tous droits réservés. 2005-2008