2009-08-15 44 views
10

有沒有人知道從PHP的getimagesize()函數返回的第三個值的所有可能結果?實施例下面這個代碼將返回:PHP getimagesize()返回什麼樣的文件類型?

  • $imageinfo['2'] = 2;用於jpg圖像,
  • $imageinfo['2'] = 3;用於png圖像,
  • $imageinfo['2'] = 0;用於gif圖像。

上面的數字可能不正確,但您明白了。

我無法在php.net或其他地方找到第三個值的所有可能結果列表。

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

回答

28

執行此:

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對象的寬度和高度。對我來說,當我第一次發現它時,它好像是一種好奇心,這就是爲什麼在這裏提到它的原因。

+0

好的答案,我已經添加了另一個答案,其中包括一段代碼,可以爲您過濾圖像文件類型。 – mjsa 2015-01-28 16:39:55

5

該指數包含PHP的IMAGETYPE_XXX constants之一的價值。它們的完整列表可以在該頁面上找到,並在底部。該頁面並未提供每個頁面的實際INT值,但您應該能夠根據需要打印幾頁來獲取值。你也可以做一個比較檢查,如果你正在尋找一個特定的一個:

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

提防引用的PHP手冊頁(http://www.php.net/manual/en/image .constants.php)以名爲'IMAGE_JPG','IMAGE_GIF'的constatns開始。這些不是正確的常數。你需要進一步在頁面下方的常量,並以'IMAGETYPE_GIF','IMAGETYPE_PNG'等開始...花了一個小時找到錯誤。 – 2014-06-11 14:17:53

2

報價the manual

指數2是IMAGETYPE_XXX 常量指示 圖像的類型之一。

,你可以找到那些常量視盤this page,其中包括由GD

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

或類似的東西。

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>";