What kind of file types does PHP getimagesize() re

2020-06-10 06:27发布

Does anyone know all the possible results for the 3rd value returned from PHP's getimagesize() function? Example this code below will return:

  • $imageinfo['2'] = 2; for a jpg image,
  • $imageinfo['2'] = 3; for a png image,
  • $imageinfo['2'] = 0; for a gif image.

The numbers might not be correct above but you get the idea.

I can't find on php.net or anywhere else a list of all possible results for the 3rd value.

$imageinfo = getimagesize($imageurl);
$image_type  = $imageinfo['2'];

7条回答
唯我独甜
2楼-- · 2020-06-10 06:41

As previously mentioned constants which start with IMAGETYPE in get_defined_constants() list supported image types.

However, if you Just run this and it will tell you which ones are supported:

function imageTypes () {

    $imageTypes = array();

    foreach(get_defined_constants() as $key => $value){
        $keyStart = explode('_', $key);
        if($keyStart[0] == 'IMAGETYPE'){
             array_push($imageTypes, $key);
        }
    }
    return $imageTypes;
}

echo "<pre>";
var_dump(imageTypes());
echo "</pre>";
查看更多
甜甜的少女心
3楼-- · 2020-06-10 06:42

If you want to convert value returned by getimagesize() as index 2 into something more human-readable, you may consider using a function like this one:

$imageTypeArray = array
(
    0=>'UNKNOWN',
    1=>'GIF',
    2=>'JPEG',
    3=>'PNG',
    4=>'SWF',
    5=>'PSD',
    6=>'BMP',
    7=>'TIFF_II',
    8=>'TIFF_MM',
    9=>'JPC',
    10=>'JP2',
    11=>'JPX',
    12=>'JB2',
    13=>'SWC',
    14=>'IFF',
    15=>'WBMP',
    16=>'XBM',
    17=>'ICO',
    18=>'COUNT'  
);

$size = getimagesize($filename);

$size[2] = $imageTypeArray[$size[2]];

Or something similar.

查看更多
在下西门庆
4楼-- · 2020-06-10 06:45

getimagesize returns a value of one of the following IMAGETYPE_* constants.

查看更多
▲ chillily
5楼-- · 2020-06-10 06:47

That index contains the value of one of PHP's IMAGETYPE_XXX constants. An entire list of them can be found on that page, towards the bottom. That page doesn't provide the actual INT value of each one but you should be able to print a few to get the values as necessary. You could also do a comparison check if you're looking for a specific one:

if ($imageinfo[2] == IMAGETYPE_IFF) {
  // Code here
}
查看更多
戒情不戒烟
6楼-- · 2020-06-10 06:52

Execute this:

print_r(get_defined_constants());

And then look for constants prefixed with IMAGETYPE_. On my PHP 5.3 installation I got these values:

[IMAGETYPE_GIF] => 1
[IMAGETYPE_JPEG] => 2
[IMAGETYPE_PNG] => 3
[IMAGETYPE_SWF] => 4
[IMAGETYPE_PSD] => 5
[IMAGETYPE_BMP] => 6
[IMAGETYPE_TIFF_II] => 7
[IMAGETYPE_TIFF_MM] => 8
[IMAGETYPE_JPC] => 9
[IMAGETYPE_JP2] => 10
[IMAGETYPE_JPX] => 11
[IMAGETYPE_JB2] => 12
[IMAGETYPE_SWC] => 13
[IMAGETYPE_IFF] => 14
[IMAGETYPE_WBMP] => 15
[IMAGETYPE_JPEG2000] => 9
[IMAGETYPE_XBM] => 16
[IMAGETYPE_ICO] => 17
[IMAGETYPE_UNKNOWN] => 0
[IMAGETYPE_COUNT] => 18

As you can see Flash SWF are considered images, and actually getimagesize() is able to read the width and height of a SWF object. To me it seemed like a curiosity when I first discovered it, that's why mentioned it here.

查看更多
姐就是有狂的资本
7楼-- · 2020-06-10 06:55

The above referred pages on the image constants only give the image constant names, not the integers stored in the image constants. The scripts above do give the integers, but I found a listing of the integers on an official PHP manual page at http://www.php.net/manual/en/function.exif-imagetype.php

查看更多
登录 后发表回答