getimagesize

(PHP 3, PHP 4 )

getimagesize -- Retourne la taille d'une image

Description

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.

Si l'accès au fichier filename est impossible, ou si ce n'est pas un format d'image supporté, getimagesize() retournera FALSE et générera une alerte.

getimagesize() retourne un tableau de 4 éléments. L'index 0 contient la longueur. L'index 1 contient la largeur. L'index 2 contient le type de l'image : 1 = GIF, 2 = JPG, 3 = PNG, 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ée en PHP 4.3. L'index 3 contient la chaîne à placer dans les balises HTML : "height=xxx width=xxx".

Exemple 1. Exemple avec getimagesize()

<?php
list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
echo
"<img src=\"img/flag.jpg\" $attr>";
?>>

Exemple 2. getimagesize() avec une URL

<?php
  $size
= getimagesize("http://www.php.net/gifs/logo.gif");
?>

Avec les images JPEG, deux en-têtes supplémentaires sont retournés : channel et bits. channel vaudra 3 avec les images RGB, et 4 avec les images CMYK. bits est le nombre de bits de chaque couleur.

Depuis PHP 4.3, bits et channels sont présent pour tous les 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 images. Dans ces cas, 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
}
?>

Si l'accès à filename est impossible, ou si ce n'est pas une image valide, getimagesize() retournera NULL et générera une alerte.

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);
  }
?>

Note : getimagesize() ne requiert pas la bibliothèque GD.

Le support URL a été ajouté en PHP 4.0.5.

Voir aussi image_type_to_mime_type(), exif_imagetype(), exif_read_data() et exif_thumbnail().

Le support du format TIFF a été ajouté en PHP 4.2.