|
|
XLII. Images
PHP ne se limite pas à la génération de pages HTML. Il peut aussi servir
à créer et manipuler des images, dans un grand choix de formats,
comme gif, png, jpg, wbmp et xpm. Et PHP peut même générer
directement des images pour le navigateur, avec la librarie GD.
GD et PHP auront aussi besoin d'autres librairies, en fonction
des formats que vous souhaitez utiliser.
Vous pouvez utiliser les fonctions PHP pour obtenir les
tailles des images aux formats
JPEG, GIF,
PNG, SWF,
TIFF et JPEG2000.
Note :
Lisez la section sur les pré-requis pour savoir comment améliorer
les possibilités de lecture, modification et écriture d'images, ainsi
que les possibilités de lecture d'images prises par des appareils
numériques.
Si vous disposez de la librairie GD (disponible
à http://www.boutell.com/gd/) vous pourrez aussi créer
et manipuler des images.
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 traiter ces images. Les versions
antérieures à la version 1.6 supportent le
GIF, mais pas le PNG.
A partir de GD 1.6, c'est le contraire.
Note :
Depuis PHP 4.3, il existe une version de GD qui est distribuée avec
PHP. Cette version contient des fonctionnalités supplémentaires, comme
les canaux alpha, et il est recommandé de l'utiliser de préférence à
la librairie externe, car elle est mieux supportée, et bien plus
stable.
Vous pouvez aussi améliorer GD en lui ajoutant des formats
d'images supplémentaires.
Tableau 1. Formats d'images supportés
Vous pouvez aussi améliorer GD en lui ajoutant des fonctionalités de
manipulation de polices. Les librairies suivantes sont supportées :
Tableau 2. Supported font libraries
Si vous avez compilé PHP avec l'option --enable-exif
vous serez capable d'accéder aux données stockées dans les en-têtes des images
JPEG et TIFF. De cette façon, vous
pouvez lire les méta données générées par les appareils numériques.
Ces fonctions ne requièrent par la librairie GD.
Note :
PHP ne nécessite aucune librairie supplémentaire pour gérer les données EXIF.
Pour activer le support de GD, vous devez compiler PHP avec
l'option --with-gd[=DIR], où DIR est le
dossier d'installation de GD. Il est recommandé d'utiliser la version
de GD qui est distribuée avec PHP, en utilisant simplement l'option
--with-gd.
Sous Windows, vous devez inclure la librairie php_gd2.dll
comme extension dans le fichier php.ini. La librairie
php_gd.dll a été supprimée de PHP 4.3.2.
Notez aussi que les fonctions conseillées truecolor, comme
imagecreatetruecolor(), requièrent GD2.
Pour activer le support exif sur Windows, php_mbstring.dll doit être chargée
avant php_exif.dll dans le php.ini.
Pour désactiver le support de GD en PHP 3, ajoutez simplement
l'option --without-gd dans votre ligne de
configuration.
Augmentez les possibilités des GD de gérer d'autres formats d'images
en spécifiant les options --with-XXXX de compilation
suivantes :
Tableau 3. Formats d'image supportés | Format d'image | Option de compilation |
|---|
| jpeg-6b |
Pour activer le support de la librairie JPEG-6b, ajouter l'option
--with-jpeg-dir=DIR.
| | png |
Pour activer le support de la librairie PNG, ajouter l'option
--with-png-dir=DIR. Notez que libpng
requiert la librairie zlib
et, donc, il vous faudra ajouter aussi
--with-zlib-dir[=DIR] dans votre ligne
de compilation.
| | xpm |
Pour activer le support de la librairie XPM, ajoutez l'option
--with-xpm-dir=DIR. Si le script
de compilation n'est pas capable de trouver les librairies nécessaires,
il vous faudra ajouter le chemin vers les librairies X11.
|
Note :
Lorsque vous compilez PHP avec libpng, vous devez utiliser la même
version que celle liée à la librairie GD.
Augmentez les possibilités de GD pour qu'elle manipule différents types de polices
de caractères en ajoutant les options --with-XXXX de compilation
suivantes :
Tableau 4. Librairies des polices de caractères supportées | Librairie | Option de configuration |
|---|
| FreeType 1.x |
Pour activer le support de FreeType 1.x, ajoutez l'option
--with-ttf[=DIR].
| | FreeType 2 |
Pour activer le support de FreeType 2, ajoutez l'option
--with-freetype-dir=DIR.
| | T1lib |
Pour activer le support de T1lib (Type 1 fonts), ajoutez l'option
--with-t1lib[=DIR].
| | Chaînes TrueType |
Pour activer le support des chaînes de caractères TrueType, ajoutez l'option
--enable-gd-native-ttf.
|
Le comportement de ces fonctions est
affecté par la configuration dans le fichier php.ini.
Exif supporte automatiquement la conversion en Unicode et JIS
pour les commentaires des utilisateurs, lorsque le module
mbstring est disponible.
Cela se fait en décodant le commentaire avec le bon jeu de
caractères. Le résultat peut alors être encodé dans le jeu
de caractères de votre sortie HTTP.
Tableau 5. Options de configuration | Nom | Par défaut | Modifiable |
|---|
| exif.encode_unicode | "ISO-8859-15" | PHP_INI_ALL | | exif.decode_unicode_motorola | "UCS-2BE" | PHP_INI_ALL | | exif.decode_unicode_intel | "UCS-2LE" | PHP_INI_ALL | | exif.encode_jis | "" | PHP_INI_ALL | | exif.decode_jis_motorola | "JIS" | PHP_INI_ALL | | exif.decode_jis_intel | "JIS" | PHP_INI_ALL |
Pour plus de détails sur les constantes PHP_INI_*,
reportez-vous à ini_set().
Voici un éclaircissement sur
l'utilisation des directives de configuration.
- exif.encode_unicode
string
exif.encode_unicode définit le jeu
de caractères UNICODE utilisé pour les commentaires.
Par défaut, c'est ISO-8859-15, qui
devrait fonctionner pour les pays non asiatiques.
Cette option peut être vide, ou bien contenir un
jeu de caractères qui est supporté par
mbstring. Si cette option est vide, la configuration
de mbstring sera utilisée.
- exif.decode_unicode_motorola
string
exif.decode_unicode_motorola définit
le jeu de caractères interne pour les utilisateurs Unicode,
si le commentaire de l'image est en big-endian (ordre de motorola).
Cette option ne peut être vide, mais vous pouvez y spécifier
une liste de jeux de caractères utilisés par mbstring. Par
défaut, c'est UCS-2BE.
- exif.decode_unicode_intel
string
exif.decode_unicode_intel définit
le jeu de caractères interne pour les utilisateurs Unicode,
si le commentaire de l'image est en little-endian (ordre d'intel).
Cette option ne peut être vide, mais vous pouvez y spécifier
une liste de jeux de caractères utilisés par mbstring. Par
défaut, c'est UCS-2LE.
- exif.encode_jis
string
exif.encode_jis définit le jeu de
caractères pour les commentaires en JIS. Par défaut,
c'est une valeur vide, ce qui force la fonction à
utiliser le jeu de caractères interne de mbstring.
- exif.decode_jis_motorola
string
exif.decode_jis_motorola définit
le jeu de caractères interne pour les utilisateurs JIS,
si le commentaire de l'image est en big-endian (ordre de motorola).
Cette option ne peut être vide, mais vous pouvez y spécifier
une liste de jeux de caractères utilisés par mbstring. Par
défaut, c'est JIS.
- exif.decode_jis_intel
string
exif.decode_jis_intel définit
le jeu de caractères interne pour les utilisateurs JIS,
si le commentaire de l'image est en little-endian (ordre d'intel).
Cette option ne peut être vide, mais vous pouvez y spécifier
une liste de jeux de caractères utilisés par mbstring. Par
défaut, c'est JIS.
Cette extension ne définit aucune ressource. Ces constantes sont définies par cette
extension, et ne sont disponibles que si cette extension a été compilée avec
PHP, ou bien chargée au moment de l'exécution.
Exemple 1. Création d'une image PNG avec PHP
<?php header("Content-type: image/png"); $string = $_GET['text']; $im = imagecreatefrompng("images/button1.png"); $orange = imagecolorallocate($im, 220, 210, 60); $px = (imagesx($im) - 7.5 * strlen($string)) / 2; imagestring($im, 3, $px, 9, $string, $orange); imagepng($im); imagedestroy($im); ?>
|
|
Cet exemple doit être appelé depuis une page HTML avec une balise
image telle que : <img src="button.php?text">.
Le script ci-dessus, button.php, prend la chaîne "text" et l'inscrit
sur le fond d'image appelé "images/button1.png", puis l'affiche.
C'est une méthode très pratique pour éviter de redessiner un nouveau bouton,
dès que vous changez son texte. De cette façon, ils sont
générés dynamiquement.
- Table des matières
- exif_imagetype -- Détermine le type d'une image
- exif_read_data -- Lit les en-têtes EXIF des images JPEG et TIFF
- exif_thumbnail -- Récupère la miniature d'une image TIFF ou JPEG
- gd_info --
Retourne des informations à propos de la librairie GD installée
- getimagesize -- Retourne la taille d'une image
- image_type_to_extension --
Retourne l'extension du fichier pour le type d'image
- image_type_to_mime_type -- Lit le Mime-Type d'un type d'image
- image2wbmp -- Crée une image WBMP
- imagealphablending -- Modifie le mode de blending d'une image
- imageantialias --
Utiliser ou non les fonctions d'antialias
- imagearc -- Dessine une ellipse partielle
- imagechar -- Dessine un caractère horizontalement
- imagecharup -- Dessine un caractère verticalement
- imagecolorallocate -- Alloue une couleur pour une image
- imagecolorallocatealpha -- Alloue une couleur à une image
- imagecolorat -- Retourne 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 --
Lit l'index de la couleur la plus proche d'une couleur spécifiée avec
sa teinte, blanc et noir (hue, white and blackness)
- imagecolordeallocate -- Supprime une couleur d'une image
- imagecolorexact -- Retourne l'index de la couleur donnée
- imagecolorexactalpha -- Retourne l'index d'une couleur avec son canal alpha
- imagecolormatch --
Fait correspondre un peu plus les couleurs de la version palette d'une image
aux couleurs de sa version truecolor
- 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é.
- imagecolorsforindex -- Retourne la couleur associée à un index
- imagecolorstotal -- Calcule le nombre de couleurs d'une palette
- imagecolortransparent -- Définit la couleur transparente
- imagecopy --
Copie une partie d'une image
- imagecopymerge --
Copie et fusionne une partie d'une image
- imagecopymergegray --
Copie et fusionne une partie d'une image en niveaux de gris
- imagecopyresampled -- Copie, redimensionne, rééchantillonne une image
- imagecopyresized -- Copie et redimensionne une partie d'une image
- imagecreate -- Crée une nouvelle image à palette
- imagecreatefromgd2 -- Crée une nouvelle image à partir d'un fichier GD2 ou d'une URL
- imagecreatefromgd2part -- Crée une nouvelle image à partir d'une partie de fichier GD2 ou d'une URL
- imagecreatefromgd -- Crée une nouvelle image à partir d'un fichier GD ou d'une 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
- imagecreatefromstring -- Crée une image à partir d'une chaîne
- imagecreatefromwbmp --
Crée une nouvelle image WBMP
à partir d'un fichier ou d'une URL
- imagecreatefromxbm --
Crée une nouvelle image XBM
à partir d'un fichier ou d'une URL
- imagecreatefromxpm --
Crée une nouvelle image XPM
à partir d'un fichier ou d'une URL
- imagecreatetruecolor -- Crée une nouvelle image en vraies couleurs
- imagedashedline -- Dessine une ligne pointillée
- imagedestroy -- détruit une image
- imageellipse -- Dessine une ellipse
- imagefill -- Remplit
- imagefilledarc -- Dessine une ellipse partielle et la remplit
- imagefilledellipse -- Dessine une ellipse pleine
- imagefilledpolygon -- Dessine un polygone rempli
- imagefilledrectangle -- Dessine un rectangle rempli
- imagefilltoborder -- Remplit une région avec une couleur spécifique
- imagefilter --
Applique un filtre à une image avec un angle donné
- imagefontheight -- Retourne la hauteur de la police
- imagefontwidth -- Retourne la largeur de la police
- imageftbbox -- Calcule le rectangle d'encadrement pour un texte, en utilisant la police courante et freetype2
- imagefttext -- Ecrit du texte dans une image avec la police courante FreeType 2
- imagegammacorrect --
Applique une correction gamma à l'image
- imagegd2 -- Génère une image au format GD2, vers le navigateur ou un fichier
- imagegd -- Génère une image au format GD, vers le navigateur ou un fichier
- imagegif -- Envoie une image GIF vers un navigateur ou un fichier
- imageinterlace -- Active ou désactive l'entrelacement
- imageistruecolor -- Détermine si une image est une image truecolor.
- imagejpeg --
Envoie une image JPEG vers un navigateur ou un fichier.
- imagelayereffect --
Active l'option d'alpha blending, pour utiliser les
effets de libgd
- imageline -- Dessine une ligne
- imageloadfont -- Charge une nouvelle police
- imagepalettecopy -- Copie la palette d'une image à l'autre
- imagepng --
Envoie une image PNG vers un navigateur ou un fichier.
- imagepolygon -- Dessine un polygone
- 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
- imagepsloadfont -- Charge une police PostScript Type 1 depuis un fichier
- imagepsslantfont --
Incline une police de caractères PostScript
- imagepstext -- Dessine un texte sur une image avec une police PostScript Type1
- imagerectangle -- Dessine un rectangle
- imagerotate -- Fait tourner une image d'un angle
- imagesavealpha -- Définit l'option pour enregistrer les informations
complètes du canal alpha lors de la sauvegarde d'images PNG.
- imagesetbrush -- Modifie la brosse pour le dessin des lignes
- imagesetpixel -- Dessine un pixel
- imagesetstyle -- Configure le style pour le dessin des lignes
- imagesetthickness -- Modifie l'épaisseur d'un trait
- imagesettile -- Modifie l'image utilisée pour le carrelage
- imagestring -- Dessine une chaîne horizontale
- imagestringup -- Dessine une chaîne verticale
- imagesx -- Retourne la largeur d'une image
- imagesy -- Retourne la hauteur de l'image
- imagetruecolortopalette -- Convertit une image en vraies couleurs en image à palette
- imagettfbbox --
Retourne le rectangle entourant un texte et dessiné avec une police TrueType.
- imagettftext -- Dessine un texte avec une police TrueType
- imagetypes --
Retourne les types d'images supportés par la version
courante de PHP
- imagewbmp -- Affiche une image WBMP
- imagexbm --
Génère une image au format XBM
- iptcembed -- Intègre des données binaires IPTC dans une image JPEG
- iptcparse --
Analyse un bloc binaire IPTC http://www.iptc.org/ et
recherche les balises simples.
- jpeg2wbmp -- Convertit une image JPEG en image WBMP
- png2wbmp -- Convertit une image PNG en image WBMP
- read_exif_data -- Alias de exif_read_data()
|