Description
array
getimagesize ( string filename [, array &imageinfo] )
getimagesize() va déterminer la taille des images
de type GIF, JPG,
PNG, SWF,
SWC, PSD,
TIFF, BMP,
IFF, JP2,
JPX, JB2,
JPC, XBM, or
WBMP et en retourner
les dimensions, le type d'image et une chaîne type
height/width à placer dans une
balise HTML <IMG> normale.
Si l'accès à filename est impossible ou bien si
filename n'est pas une image valide,
getimagesize() retournera FALSE et générera une erreur
de niveau E_WARNING.
Note :
Le support de JPC, JP2,
JPX, JB2,
XBM et WBMP a été ajouté en PHP
4.3.2. Le support de SWC, lui, en PHP 4.3.0 et le
support de TIFF en PHP 4.2.0.
Note :
Le support de JPEG 2000 a été ajouté en PHP 4.3.2. Notez que JPC et JP2
sont capables d'avoir des composants avec une profondeur de bit différente.
Dans ce cas, la valeur de "bits" est la plus grande profondeur de bit
rencontrée. De même, les fichiers JP2 disposent du support de
multiple JPEG 2000 codestreams.
Dans ce cas, getimagesize()
retourne les valeurs pour le premier codestream rencontré Ã la racine du
fichier.
Note :
La fonction getimagesize() ne requiert pas la
bibliothèque GD.
getimagesize() retourne un tableau de 4 éléments.
L'index 0 contient la largeur. L'index 1 contient la longueur. L'index 2
contient le type de l'image :
1 = GIF,
2 = JPG,
3 = PNG,
4 = SWF,
5 = PSD,
6 = BMP,
7 = TIFF (Ordre des octets Intel),
8 = TIFF (Ordre des octets Motorola),
9 = JPC,
10 = JP2,
11 = JPX,
12 = JB2,
13 = SWC,
14 = IFF.
Ces valeurs correspondent aux constantes IMAGETYPE
qui ont été ajoutées en PHP 4.3.
L'index 3 contient la chaîne à placer dans les balises
IMG : height="xxx" width="yyy".
Exemple 1. Exemple avec getimagesize()
<?php list($width, $height, $type, $attr) = getimagesize("img/flag.jpg"); echo "<img src=\"img/flag.jpg\" alt=\"Exemple de getimagesize()\" $attr />"; ?>
|
|
Le support des URL a été ajouté en PHP 4.0.5.
Exemple 2. getimagesize() avec une URL
<?php $size = getimagesize("http://www.example.com/gifs/logo.gif"); // Si le nom du fichier comporte des espaces, encodez-le ! $size = getimagesize("http://www.example.com/gifs/lo%20go.gif"); ?>
|
|
Avec les images JPG, deux en-têtes supplémentaires sont
retournés : channels et bits.
channels vaudra 3 avec les images RGB, et 4 avec les
images CMYK. bits est le nombre de bits pour chaque
couleur.
Depuis PHP 4.3, bits et
channels sont présents pour tous types d'images.
Cependant, la présence de ces valeurs peut mener à la confusion. Par
exemple, une image GIF utilise toujours trois canaux par
pixel, mais le nombre de bits par pixel ne peut être calculé dans le cas
d'une image animée GIF ayant une table de couleur
globale.
Certains formats peuvent ne contenir aucune image, ou bien plusieurs.
Dans ces cas-là , getimagesize() peut ne pas être capable
de déterminer correctement la taille de l'image.
getimagesize() retourne alors zéro comme taille de
hauteur et largeur.
Depuis PHP 4.3, getimagesize() retourne aussi un
paramètre additionnel, mime, qui correspond au type MIME
d'une image. Cette information peut être utilisée pour envoyer l'en-tête
HTTP correct.
Exemple 3. getimagesize() et types MIME
<?php $size = getimagesize($filename); $fp = fopen($filename, "rb"); if ($size && $fp) { header("Content-type: {$size['mime']}"); fpassthru($fp); exit; } else { // error } ?>
|
|
Le paramètre optionnel imageinfo permet
d'extraire des informations supplémentaires du fichier image.
Actuellement, cette option va retourner différents marqueurs
JPG APP dans un tableau associatif. Certains programmes
utilisent ces marqueur APP pour préciser les informations dans
les balises HTML. Un marqueur commun est le marqueur APP13, décrit
à http://www.iptc.org/. Vous pouvez utiliser
la fonction iptcparse() pour analyser ce marqueur, et
obtenir des informations intelligibles.
Exemple 4. getimagesize() qui retourne IPTC
<?php $size = getimagesize("testimg.jpg", $info); if (isset($info["APP13"])) { $iptc = iptcparse($info["APP13"]); var_dump($iptc); } ?>
|
|
Voir aussi
image_type_to_mime_type(),
exif_imagetype(),
exif_read_data() et
exif_thumbnail().