PHP/GD - Нахождение Типа ресурса Изображения

Наличие только допустимого ресурса изображения GD является этим возможный узнать тип исходного изображения?

Например:

$image = ImageCreateFromPNG('http://sstatic.net/so/img/logo.png');

Я могу получить тип исходного изображения (PNG), имеющий в наличии только переменную $image?

6
задан Alix Axel 27 December 2009 в 11:59
поделиться

3 ответа

Я так не думаю. $image находится во внутреннем формате изображения GD после его обработки функцией ImageCreate().

.
4
ответ дан 8 December 2019 в 18:37
поделиться

Я не уверен, можно ли это сделать из переменной $imeType, но для получения MimeType вы обычно можете использовать любой из четырех:

// with GD
$img = getimagesize($path);
return $img['mime'];

// with FileInfo
$fi = new finfo(FILEINFO_MIME);
return $fi->file($path);

// with Exif (returns image constant value)
return exif_imagetype($path)

// deprecated
return mime_content_type($path);

Из вашего вопросительного описания, как я понимаю, вы хотите использовать удаленный файл, так что вы можете сделать что-нибудь подобное, чтобы это работало:

$tmpfname = tempnam("/tmp", "IMG_"); // use any path writable for you
$imageCopy = file_get_contents('http://www.example.com/image.png');
file_put_contents($tmpfname, $imageCopy);
$mimetype = // call any of the above functions on $tmpfname;
unlink($tmpfname);

Примечание: если функция MimeType, которую вы будете использовать, поддерживает удаленные файлы, используйте ее напрямую, вместо создания копии файла сначала

Если вам нужен MimeType только для того, чтобы определить, какую функцию imagecreatefrom использовать, почему бы не загрузить файл сначала в виде строки, а затем позволить GD решить, e. g.

// returns GD image resource of false
$imageString = file_get_contents('http://www.example.com/image.png');
if($imageString !== FALSE) {
    $image = imagecreatefromstring($imageString);
}
9
ответ дан 8 December 2019 в 18:37
поделиться

Вы можете просто попробовать загрузить ресурс с помощью png загрузчика, и если это не png образ, то он выйдет из строя, вернув FALSE. Затем просто повторите с каждым из допустимых форматов, и если все провалится, то выдаст ошибку.

.
0
ответ дан 8 December 2019 в 18:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: