PHP / GD - 查找图像资源类型

时间:2009-12-27 10:27:27

标签: php image image-processing resources gd

只有一个有效的GD图像资源才能找到原始图像的类型?

例如:

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

我是否可以获得仅具有$ image变量的原始图像类型(PNG)?

3 个答案:

答案 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。然后只需重复您想要的每种有效格式,如果全部失败,则显示错误。