Какие типы файлов возвращает PHP getimagesize ()?

Кто-нибудь знает все возможные результаты для 3-го значения, возвращаемого функцией PHP getimagesize ()? Пример этого кода ниже вернется:

  • $imageinfo['2'] = 2; для jpg изображения,
  • $imageinfo['2'] = 3; для png изображения,
  • $imageinfo['2'] = 0; для gif изображения.

Номера могут быть неверными выше, но вы получите эту идею.

Я не могу найти на php.net или где-либо еще список всех возможных результатов для третьего значения.

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

Выполните следующее:

 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. Для меня это показалось мне любопытством, когда я впервые его обнаружил, поэтому упомянул об этом здесь.

Этот индекс содержит значение одной из констант IMAGETYPE_XXX PHP. Весь список из них можно найти на этой странице, внизу. Эта страница не предоставляет фактическое значение INT каждого, но вы должны иметь возможность напечатать несколько, чтобы получить значения по мере необходимости. Вы также можете выполнить проверку сравнения, если вы ищете конкретный вариант:

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

Как упоминалось ранее, константы, которые начинаются с IMAGETYPE в списке get_defined_constants (), поддерживают типы изображений.

Однако, если вы просто запустите это, и он скажет вам, какие из них поддерживаются:

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

Указание руководства :

Индекс 2 является одной из констант IMAGETYPE_XXX, указывающих тип изображения.

И вы можете найти эти константы на этой странице , среди других, определенных GD

getimagesize возвращает значение одной из следующих констант IMAGETYPE_* .

Если вы хотите преобразовать значение, возвращаемое getimagesize() качестве индекса 2 в нечто более getimagesize() человека, вы можете использовать такую ​​функцию, как эта:

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

Или что-то подобное.

Вышеупомянутые страницы констант изображения дают только имена констант изображения, а не целые числа, сохраненные в константах изображения. Сценарии выше дают целые числа, но я нашел список целых чисел на официальной странице руководства PHP по адресу http://www.php.net/manual/en/function.exif-imagetype.php