PHP getimagesize()返回什么样的文件类型?

时间:2009-08-15 17:10:31

标签: php getimagesize

有没有人知道PHP的getimagesize()函数返回的第3个值的所有可能结果?示例此代码将返回:

  • $imageinfo['2'] = 2;获取jpg图片,
  • $imageinfo['2'] = 3;获取png图片,
  • $imageinfo['2'] = 0;获取gif图片。

上面的数字可能不正确,但你明白了。

我无法在php.net或其他任何地方找到第3个值的所有可能结果的列表。

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

8 个答案:

答案 0 :(得分:29)

执行此操作:

print_r(get_defined_constants());

然后查找以IMAGETYPE_为前缀的常量。在我的PHP 5.3安装中,我得到了这些值:

[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

如您所见,Flash SWF被视为图像,实际上getimagesize()能够读取SWF对象的宽度和高度。对我来说,当我第一次发现它时,这似乎是一种好奇心,这就是为什么在这里提到的。

答案 1 :(得分:5)

该索引包含PHP的IMAGETYPE_XXX constants之一的值。可以在该页面的底部找到它们的完整列表。该页面不提供每个页面的实际INT值,但您应该能够打印一些以获取必要的值。如果您正在寻找特定的一个,您也可以进行比较检查:

if ($imageinfo[2] == IMAGETYPE_IFF) {
  // Code here
}

答案 2 :(得分:3)

如前所述,在get_defined_constants()中以IMAGETYPE开头的常量列出了支持的图像类型。

但是,如果你只是运行它,它会告诉你哪些支持:

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 :(得分:2)

引用the manual

  

索引2是IMAGETYPE_XXX之一   表示类型的常量   图像。

你可以在GD {/ p>定义的另一个中找到onh this page的那些常数

答案 4 :(得分:1)

getimagesize返回以下IMAGETYPE_* constants之一的值。

答案 5 :(得分:1)

如果您希望将getimagesize()作为索引2返回的转换值转换为人类可读的内容,您可以考虑使用类似这样的函数:

$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]];

或类似的东西。

答案 6 :(得分:0)

图像常数上面提到的页面只给图像常量名称,而不是图像常量中存储的整数。上面的脚本确实给出了整数,但我在http://www.php.net/manual/en/function.exif-imagetype.php的官方PHP手册页上找到了整数的列表

答案 7 :(得分:0)

请注意,在某些情况下,getimagesize会返回false,例如,svn对象可能会发生这种情况。