13

有谁知道 PHP 的 getimagesize() 函数返回的第三个值的所有可能结果?示例下面的代码将返回:

  • $imageinfo['2'] = 2;对于jpg图像,
  • $imageinfo['2'] = 3;对于png图像,
  • $imageinfo['2'] = 0;gif图像。

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

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

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

8 回答 8

32

执行这个:

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 对象的宽度和高度。对我来说,当我第一次发现它时,它似乎是一种好奇心,这就是为什么在这里提到它。

于 2009-08-15T17:19:41.590 回答
6

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

if ($imageinfo[2] == IMAGETYPE_IFF) {
  // Code here
}
于 2009-08-15T17:16:33.373 回答
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>";
于 2015-01-28T16:39:17.057 回答
2

引用手册

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

您可以在此页面上找到这些常量,以及 GD 定义的其他常量

于 2009-08-15T17:17:59.813 回答
1

getimagesizeIMAGETYPE_*返回下列常量之一的值。

于 2009-08-15T17:18:13.730 回答
1

如果你想getimagesize()as index返回的值转换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]];

或类似的东西。

于 2013-09-06T09:45:50.987 回答
1

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

于 2014-03-26T23:45:29.947 回答
0

请注意,在某些情况下,失败getimagesize返回false它会发生例如svn您可能没想到的对象。

于 2020-12-12T11:37:33.660 回答