Exif_imagetype

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

Tick tick app. Exifimagetype関数で画像ファイルかの確認 参考:exifimagetype 【画像の保存方法について】 データベースに画像を保存してしまうと、ユーザーデータを取得する時に画像データが大きい為、データ取得の時間が長くなってしまう恐れがある。.

exif_imagetypeDetermine the type of an image

If you recieve an error 'Fatal error: Call to undefined function: exifimagetype in /my/path/images.inc.php on line 110', this means your server's install of PHP. VERSION 1.0.1: Released on 12 August, 2014 # Fixed Fatal error: Call to undefined function exifimagetype # Fixed bug: show full page when click on K2 detail article # Fixed bug: remain default super admin account (SmartAddons) when install quickstart package VERSION 1.0.0: Released on 05 August, 2014 - Compatible with Joomla 3.x.

Description

exif_imagetype() reads the first bytes of an image and checks its signature.

exif_imagetype() can be used to avoid calls to other exif functions with unsupported file types or in conjunction with $_SERVER['HTTP_ACCEPT'] to check whether or not the viewer is able to see a specific image in the browser.

Parameters

filename
The image being checked.

Return Values

When a correct signature is found, the appropriate constant value will be returned otherwise the return value is false. The return value is the same value that getimagesize() returns in index 2 but exif_imagetype() is much faster.

Note:

exif_imagetype() will emit an E_NOTICE and return false if it is unable to read enough bytes from the file to determine the image type.

Changelog

VersionDescription
7.1.0 Added WebP support.

Predefined Constants

The following constants are defined, and represent possible exif_imagetype() return values:
Imagetype Constants
ValueConstant
1IMAGETYPE_GIF
2IMAGETYPE_JPEG
3IMAGETYPE_PNG
4IMAGETYPE_SWF
5IMAGETYPE_PSD
6IMAGETYPE_BMP
7IMAGETYPE_TIFF_II (intel byte order)
8IMAGETYPE_TIFF_MM (motorola byte order)
9IMAGETYPE_JPC
10IMAGETYPE_JP2
11IMAGETYPE_JPX
12IMAGETYPE_JB2
13IMAGETYPE_SWC
14IMAGETYPE_IFF
15IMAGETYPE_WBMP
16IMAGETYPE_XBM
17IMAGETYPE_ICO
18IMAGETYPE_WEBP
Exif_imagetype

Examples

Example #1 exif_imagetype() example

<?php
if (exif_imagetype('image.gif') != IMAGETYPE_GIF) {
echo
'The picture is not a gif';
}
?>

See Also

  • image_type_to_mime_type() - Get Mime-Type for image-type returned by getimagesize, exif_read_data, exif_thumbnail, exif_imagetype
  • getimagesize() - Get the size of an image
christophe dot tournayre at univ*bpclermont dot Fr
7 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');
}
?>
Tim
13 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;
admin at leonard !spam challis dot com
10 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.
tom dot ghyselinck at telenet dot be

Exif_imagetype Not Working

13 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;
}
}
vuatintac at yahoo dot com
6 years ago
to checking file is image, I used this:
function is_image($path)
{
$a = getimagesize($path);
$image_type = $a[2];
if(in_array($image_type , array(IMAGETYPE_GIF , IMAGETYPE_JPEG ,IMAGETYPE_PNG , IMAGETYPE_BMP)))
{
return true;
}
return false;
}
Anonymous
14 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
tom at tomvergote dot be
17 years ago

Exif_imagetype Bypass

libexif can also be used to parse image info out of id3 tags:
exif_read_data('mp3_with_2.4ID3TAGS, ', true, false);

Exif_imagetype Php

  • Exif Functions