只有一个有效的GD图像资源才能找到原始图像的类型?
例如:
$image = ImageCreateFromPNG('http://sstatic.net/so/img/logo.png');
我是否可以获得仅具有$ image变量的原始图像类型(PNG)?
答案 0 :(得分:9)
我不确定是否可以从$ image变量完成,但要获取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决定,例如
// returns GD image resource of false
$imageString = file_get_contents('http://www.example.com/image.png');
if($imageString !== FALSE) {
$image = imagecreatefromstring($imageString);
}
答案 1 :(得分:4)
我不这么认为,不。在ImageCreate()
函数处理后,$ image采用GD的内部图像格式。
答案 2 :(得分:0)
您可以尝试使用png加载器加载资源,如果它不是png图像,它将失败,返回FALSE。然后只需重复您想要的每种有效格式,如果全部失败,则显示错误。