exif_imagetype

(PHP 4 >= 4.3.0, PHP 5, PHP 7, PHP 8)

exif_imagetypeDetermina el tipo de una imagen

Descripción

exif_imagetype(string $filename): int|false

exif_imagetype() lee los primeros octetos del fichero de imagen filename, y verifica su firma.

exif_imagetype() puede ser utilizada para evitar las llamadas a las otras funciones exif para los formatos de ficheros que no son soportados, o en conjunción con $_SERVER['HTTP_ACCEPT'] para verificar si el usuario podrá ver esta imagen en su navegador.

Parámetros

filename
La imagen a verificar.

Valores devueltos

Cuando se encuentra un valor válido, se devuelve la constante apropiada, y de lo contrario, false. El valor devuelto es el mismo que la función getimagesize() en el índice 2, pero esta función es mucho más rápida.

Las constantes siguientes están definidas y representan los valores posibles de retorno de la función exif_imagetype() :

Constantes de tipo de imágenes
Valor Constante
1 IMAGETYPE_GIF
2 IMAGETYPE_JPEG
3 IMAGETYPE_PNG
4 IMAGETYPE_SWF
5 IMAGETYPE_PSD
6 IMAGETYPE_BMP
7 IMAGETYPE_TIFF_II (orden de octetos de Intel)
8 IMAGETYPE_TIFF_MM (orden de octetos 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
18 IMAGETYPE_WEBP
19 IMAGETYPE_AVIF

Nota:

La función exif_imagetype() emitirá una alerta de nivel E_NOTICE y devolverá false si no es capaz de leer suficientes octetos desde el fichero para determinar el tipo de imagen.

Historial de cambios

Versión Descripción
7.1.0 Añadida la compatibilidad con WebP.
8.1.0 Añadida la compatibilidad con AVIF.

Ejemplos

Ejemplo #1 Ejemplo con exif_imagetype()

<?php
if (exif_imagetype('image.gif') != IMAGETYPE_GIF) {
echo
'Esta imagen no es un gif';
}
?>

Ver también

  • image_type_to_mime_type() - Obtiene el tipo Mime de un tipo de imagen devuelto por getimagesize, exif_read_data, exif_thumbnail, exif_imagetype
  • getimagesize() - Obtener el tamaño de una imagen

add a note

User Contributed Notes 4 notes

up
23
christophe dot tournayre at univ*bpclermont dot Fr
11 years 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
22
Tim
17 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
16
admin at leonard !spam challis dot com
14 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
11
tom dot ghyselinck at telenet dot be
17 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;
}
}
To Top