PHP 5.4.31 Released

exif_imagetype

(PHP 4 >= 4.3.0, PHP 5)

exif_imagetypeDétermine le type d'une image

Description

int exif_imagetype ( string $filename )

exif_imagetype() lit les premiers octets du fichier d'image filename, et vérifie sa signature.

exif_imagetype() peut être utilisée pour éviter les appels aux autres fonctions exif pour les formats de fichiers qui ne sont pas supportés, ou en conjonction avec $_SERVER['HTTP_ACCEPT'] pour vérifier si l'utilisateur pourra voir cette image dans son navigateur.

Liste de paramètres

filename
L'image à vérifier.

Valeurs de retour

Lorsqu'une valeur valide est trouvée, la constante appropriée est retournée, et sinon, FALSE. La valeur retournée est la même que la fonction getimagesize() à l'index 2, mais cette fonction est bien plus rapide.

Note:

La fonction exif_imagetype() émettra une alerte de niveau E_NOTICE et retournera FALSE si elle n'est pas capable de lire assez d'octets depuis le fichier pour y déterminer le type d'image.

Historique

Version Description
5.3.0 Ajout du support icon.
4.3.2 Support pour JPC, JP2, JPX, JB2, XBM et WBMP
4.3.0 Support pour SWC

Constantes pré-définies

Les constantes suivantes sont définies et représentent les valeurs possibles de retour de la fonction exif_imagetype() :

Constantes de type d'images
Valeur Constante
1 IMAGETYPE_GIF
2 IMAGETYPE_JPEG
3 IMAGETYPE_PNG
4 IMAGETYPE_SWF
5 IMAGETYPE_PSD
6 IMAGETYPE_BMP
7 IMAGETYPE_TIFF_II (ordre d'octets d'Intel)
8 IMAGETYPE_TIFF_MM (ordre d'octets Motorola)
9 IMAGETYPE_JPC
10 IMAGETYPE_JP2
11 IMAGETYPE_JPX
12 IMAGETYPE_JB2
13 IMAGETYPE_SWC
14 IMAGETYPE_IFF
15 IMAGETYPE_WBMP
16 IMAGETYPE_XBM
17 IMAGETYPE_ICO

Exemples

Exemple #1 Exemple avec exif_imagetype()

<?php
if (exif_imagetype('image.gif') != IMAGETYPE_GIF) {
    echo 
'Cette image n\'est pas un gif';
}
?>

Voir aussi

add a note add a note

User Contributed Notes 7 notes

up
14
admin at leonard !spam challis dot com
3 years ago
Windows users: If you get the fatal error "Fatal error:  Call to undefined function exif_imagetype()", and you have enabled php_exif.dll, make sure you enable php_mbstring.dll. You must put mbstring before exif in the php.ini, i.e.:

extension=php_mbstring.dll
extension=php_exif.dll

You can check whether this has worked by calling phpinfo() and searching for exif.
up
3
tom dot ghyselinck at telenet dot be
6 years ago
If the function exif_imagetype() is not available,
you can try the following workaround:

if ( ! function_exists( 'exif_imagetype' ) ) {
    function exif_imagetype ( $filename ) {
        if ( ( list($width, $height, $type, $attr) = getimagesize( $filename ) ) !== false ) {
            return $type;
        }
    return false;
    }
}
up
2
christophe dot tournayre at univ*bpclermont dot Fr
10 months ago
Because I only want to check for jpeg or png from a memory string, this is my 2 functions that are quick and don't have any dependencies :

<?php
 
function is_jpeg(&$pict)
  {
    return (
bin2hex($pict[0]) == 'ff' && bin2hex($pict[1]) == 'd8');
  }

  function
is_png(&$pict)
  {
    return (
bin2hex($pict[0]) == '89' && $pict[1] == 'P' && $pict[2] == 'N' && $pict[3] == 'G');
  }
?>
up
1
Tim
6 years ago
By trial and error, it seems that a file has to be 12 bytes or larger in order to avoid a "Read error!".  Here's a work-around to avoid an error being thrown:

// exif_imagetype throws "Read error!" if file is too small
if (filesize($uploadfile) > 11)
    $mimetype = exif_imagetype($uploadfile);
else
    $mimetype = false;
up
-1
Anonymous
7 years ago
Seems to give a 'Read error' warning if the size of the file is very small (2 bytes). I think this is because it needs a min 3 bytes to determine the file type
up
-1
sourabh dot deshmukh at snstech dot com
7 months ago
This functions showing up a warning message that "warnings stream does not support seeking". Is it related to size of file which you mentioned in earlier post or something else. Also how do I get rid of that warning?
up
-1
tom at tomvergote dot be
10 years ago
libexif can also be used to parse image info out of id3 tags:

exif_read_data("mp3_with_2.4ID3TAGS, '', true, false);
To Top