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 le 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 ces 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. Pour les versions plus récentes, 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
Format d'image | Librairie à télécharger | Notes |
---|---|---|
gif | Uniquement supporté en versions de GD antérieures à gd-1.6. Le support des images GIF est disponible en lecture seule depuis PHP 4.3.0, et dans la version de la librairie qui est fournie avec la distribution de PHP. | |
jpeg-6b | ftp://ftp.uu.net/graphics/jpeg/ | |
png | http://www.libpng.org/pub/png/libpng.html | Uniquement supporté avec GD plus récente que gd-1.6. |
xpm | ftp://metalab.unc.edu/pub/Linux/libs/X/!INDEX.html | Il est probable que vous ayez déjà cette librairie disponible si votre système dispose d'un environnement X. |
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
Librarie de police | Téléchargement | Notes |
---|---|---|
FreeType 1.x | http://www.freetype.org/ | |
FreeType 2 | http://www.freetype.org/ | |
T1lib | ftp://sunsite.unc.edu/pub/Linux/libs/graphics/) | Support des polices de Type 1. |
Si vous avez compilé PHP avec l'option --enable-exif vous serez capable d'accéder aux données stockées dans les entê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 requiert 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é 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. Il y a aussi la librairie php_gd.dll pour GD version 1.x mais elle n'est pas recommandée.
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 de compilations 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. |
Augmentez les possibilités de GD pour qu'elle manipule différentes types de polices de caractères en ajoutant les options de compilations 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]. |
Native TrueType string function | 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 serveur 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 |
Voici un éclaircissement sur l'utilisation des directives de configuration.
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 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 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 définit le jeux 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 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 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.
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.
Précédent | Sommaire | Suivant |
ob_iconv_handler | Niveau supérieur | exif_imagetype |