Наличие только допустимого ресурса изображения GD является этим возможный узнать тип исходного изображения?
Например:
$image = ImageCreateFromPNG('http://sstatic.net/so/img/logo.png');
Я могу получить тип исходного изображения (PNG), имеющий в наличии только переменную $image?
Я так не думаю. $image находится во внутреннем формате изображения GD после его обработки функцией ImageCreate()
.
Я не уверен, можно ли это сделать из переменной $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);
}
Вы можете просто попробовать загрузить ресурс с помощью png загрузчика, и если это не png образ, то он выйдет из строя, вернув FALSE. Затем просто повторите с каждым из допустимых форматов, и если все провалится, то выдаст ошибку.
.