(PHP 4, PHP 5, PHP 7, PHP 8)
getimagesize — Retourne la taille d'une image
getimagesize() détermine la taille de toute image supportée
fournie et en retourne les dimensions, le type d'image et une chaîne type
height/width à placer dans une balise
HTML IMG normale
et le type de contenu HTTP correspondant.
getimagesize() peut également retourner plus d'informations
dans le paramètre image_info.
Cette fonction s'attend à ce que filename soit un
fichier image valide. Si un fichier non image est fourni, il peut être
détecté de manière incorrecte en tant qu'image et la fonction retourne
avec succès, mais le tableau peut contenir des valeurs absurdes.
Il ne faut pas utiliser getimagesize() pour vérifier qu'un fichier donné est une image valide. Il est préférable d'utiliser à la place une solution prévue pour cela telle que l'extension FileInfo.
Note: Il est à noter 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: Les informations sur les icônes sont récupérées depuis l'icône possédant le plus haut débit.
Note: Les images GIF consistant d'un ou plusieurs cadres, où chaque cadre peut occuper uniquement une partie de l'image. La taille de l'image qui est rapportée par getimagesize() est la taille globale (lue depuis le descripteur logique de l'écran).
filenameCe paramètre spécifie le fichier dont l'on veut récupérer les informations. Il peut être un fichier local ou (suivant la configuration), un fichier distant en utilisant un des flux supportés.
image_infoCe paramètre optionnel 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 marqueurs APP pour préciser les informations dans les balises HTML. Un marqueur commun est le marqueur APP13, décrit à » IPTC. Il est possible d'utiliser la fonction iptcparse() pour analyser ce marqueur, et obtenir des informations intelligibles.
Note:
image_infosupporte uniquement les fichiers JFIF.
Retourne un tableau contenant jusqu'à 7 éléments. Tous les types
d'images n'incluent pas les éléments channels et
bits.
L'index 0 contient la largeur. L'index 1 contient la hauteur.
Note:
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.
Note: getimagesize() est indépendante des métadonnées de l'image. Par exemple, si le drapeau Exif
Orientationest défini sur une valeur qui fait pivoter l'image de 90 ou 270 degrés, les indices 0 et 1 sont échangés, c'est-à-dire qu'ils contiennent respectivement la hauteur et la largeur.
L'index 2 est une constante parmi IMAGETYPE_*,
indiquant le type de l'image.
L'index 3 contient la chaîne à placer dans les balises
IMG : height="xxx" width="yyy".
mime correspond au type MIME d'une image.
Cette information peut être utilisée pour envoyer l'en-tête
HTTP Content-type correct :
Exemple #1 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
}
?>
channels sera 3 pour des images RGB et 4 pour
des images CMYK.
bits est le nombre de bits pour chaque couleur.
Cependant, la présence des valeurs de channels et
de bits 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.
Si une erreur survient, false est retourné.
Si l'accès à filename est impossible,
getimagesize() générera une erreur de niveau
E_WARNING. Si une erreur survient lors de la lecture,
getimagesize() générera une erreur de niveau
E_NOTICE.
À partir de PHP 8.0.0, une ValueError est lancée
si filename est vide.
| Version | Description |
|---|---|
| 8.2.0 |
Retourne les dimensions actuelles de l'image, bits et chaînes des images AVIF;
précédemment, les dimensions étaient reportées en tant que 0x0,
et bits et chaînes n'étaient pas reportées du tout.
|
| 8.0.0 |
Une ValueError est désormais lancée si
filename est vide ; précédemment un
E_WARNING était émis et la fonction retournait false.
|
| 7.1.0 | Ajout du support de WebP. |
Exemple #2 Exemple avec getimagesize()
<?php
list($width, $height, $type, $attr) = getimagesize("img/flag.jpg");
echo "<img src=\"img/flag.jpg\" $attr alt=\"Exemple avec getimagesize()\" />";
?>Exemple #3 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");
?>Exemple #4 getimagesize() qui retourne IPTC
<?php
$size = getimagesize("testimg.jpg", $info);
if (isset($info["APP13"])) {
$iptc = iptcparse($info["APP13"]);
var_dump($iptc);
}
?>Note:
Cette fonction ne nécessite pas la bibliothèque GD.