有没有办法从GD手柄中确定图像的类型?

时间:2012-02-28 04:28:11

标签: php gd thumbnails mime-types exif

我正在编写一个缩略图脚本,从我看到的缩略图往往看起来与它们的源格式相同。但是,脚本可能是从Web获取图像,因此我无法访问该文件两次。那么有没有办法获得exif_imagetype以外的文件类型和其他必须重新打开图像的函数?我不想依赖扩展,因为这显然是错误的。

我正在使用GD进行缩略图处理,所以使用句柄的东西会很完美,但我也可以使用文件的内容。是的,我知道GD会处理未压缩数据,但我不确定他们是否记得他们解压缩的数据。

2 个答案:

答案 0 :(得分:1)

function getImageExt($bytes)
{
    $hex_bytes = '';
    for ($i = 0; $i < strlen($bytes); $i++)
    {
        $hex_bytes .=  dechex(ord($bytes[$i]));
    }
    if (strncasecmp($hex_bytes,'FFD8',4) === 0) return 'jpg';
    if (strncasecmp($hex_bytes,'474946',6) === 0) return 'gif';
    if (strncasecmp($hex_bytes,'89504e47',8) === 0) return 'png';
    if (strncasecmp($hex_bytes,'424d',4) === 0) return 'bmp';
    return false;
}

答案 1 :(得分:-1)

希望这有帮助

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

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