PHP Conference Nagoya 2025

exif_imagetype

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

exif_imagetypeVerifica o tipo de uma imagem

Descrição

exif_imagetype(string $filename): int|false

exif_imagetype() lê os primeiros bytes de uma imagem e verifica sua assinatura.

exif_imagetype() pode ser usada para evitar chamadas a outras funções exif que não têm suporte a certos tipos de arquivos ou um conjunção com $_SERVER['HTTP_ACCEPT'] para verificar se o visualizador é capaz de mostrar uma imagem específica no browser.

Parâmetros

filename
A imagem a ser verificada.

Valor Retornado

Quando uma assinatura correta é encontrada, o valor da constante associada será retornado, caso contrário o valor de retorno será false. O valor retornado é o mesmo valor que getimagesize() retorna no índice 2, mas exif_imagetype() é bem mais rápida.

As seguintes constantes estão definidas, e representam os possíveis valores de retorno de exif_imagetype():

Constantes Imagetype
Valor Constante
1 IMAGETYPE_GIF
2 IMAGETYPE_JPEG
3 IMAGETYPE_PNG
4 IMAGETYPE_SWF
5 IMAGETYPE_PSD
6 IMAGETYPE_BMP
7 IMAGETYPE_TIFF_II (ordem de bytes Intel)
8 IMAGETYPE_TIFF_MM (ordem de bytes 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:

exif_imagetype() emitirá um erro de nível E_NOTICE e retornará false se for incapaz de ler bytes suficientes do arquivo para determinar o tipo da imagem.

Registro de Alterações

Versão Descrição
7.1.0 Adicionado suporte a WebP.
8.1.0 Adicionado suporte a AVIF.

Exemplos

Exemplo #1 Exemplo de exif_imagetype()

<?php
if (exif_imagetype('image.gif') != IMAGETYPE_GIF) {
echo
'A imagem não é do tipo gif';
}
?>

Veja Também

adicione uma nota

Notas Enviadas por Usuários (em inglês) 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
16 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