Определение формата картинки на основе содержимого файла

Olsufr

Guest
Определение формата картинки на основе содержимого файла

Подскажите, какой функцией определяется формат картинки не по расширению ее файла, а по фактическому содержимому?

Сделал так:
PHP:
if ($image = imagecreatefromjpeg($file)) {
    // значит файл в формате JPEG
} elseif ($image = imagecreatefromgif($file)) {
    // значит файл в формате GIF
} elseif ($image = imagecreatefrompng($file)) {
    // значит файл в формате PNG
} elseif ($image = imagecreatefromwbmp($file)) {
    // значит файл в формате WBMP
} else {
    //...
}
unset($image);
Другой вариант:
PHP:
if ($image = imagecreatefromstring($file)) {
    // картинка в одном из форматов:  JPEG, PNG, GIF, WBMP или GD2
}
unset($image);
Но весь этот код выглядит довольно расточительным, когда нужно только определить формат, не работая в дальнейшем над изображением. Может есть более простой метод?
 

bkonst

.. хочется странного?...
Либо, если нужна совместимость с PHP<4.3, можно использовать getimagesize:
PHP:
  // get the information about the image
  if (!$data = @getimagesize($filename)) { return false; };
  switch ($data[2]) {
  case 1: // GIF
    // Handle lack of GIF support in older versions of PHP
    if (function_exists('imagecreatefromgif')) {
      return @imagecreatefromgif($filename);
    } else {
      return false;
    };
  case 2: // JPG
    return @imagecreatefromjpeg($filename);
  case 3: // PNG
    return @imagecreatefrompng($filename);
  case 15: // WBMP
    return @imagecreatefromwbmp($filename);
  };
 
Сверху