如何从base64字符串中获取图像类型?我读了另一篇与此相似的帖子,但它没有给出图像类型,jpeg,png等。下面是我当前的代码。
$type = finfo_buffer(finfo_open(), base64_decode($b64Img), FILEINFO_MIME_TYPE);
print($type);
//prints "application/octet-stream"
答案 0 :(得分:2)
此代码应该可以运行,尝试一下:
$finfo = new finfo(FILEINFO_MIME);
echo $finfo->buffer(base64_decode($b64Img)) . "\n";
答案 1 :(得分:1)
您可以使用自PHP 5.3.0起可用的FILEINFO_MIME_TYPE而不是FILEINFO_MIME。
答案 2 :(得分:0)
您需要解码base64数据,然后阅读它的魔力:
// read first 12 characters out of the base64 stream then decode
// to 9 characters. (9 should be sufficient for a magic)
$magic = base64_decode(substr($b64Img, 0, 12));
// determine file type
if (substr($magic, 0, 1) == 0xff &&
substr($magic, 1, 1) == 0xd8)
{
// jpg
}
else if (substr($magic, 0, 1) == 0x89 &&
substr($magic, 1, 5) == "PNG\r\n" &&
substr($magic, 6, 1) == 0x1a &&
substr($magic, 7, 1) == "\r")
{
// png
}
...
答案 3 :(得分:-1)
获得图像的base64文本后,您只需要分析其第一部分以确定文件类型。所有base64字符串都以这样的内容开头:
<%= link_to "Business Development", business_development_path, :class => 'home_links', :style => 'color: white'; %>
您只需要查看"data:image/(png|jpg|gif);base64,iVBORw0KG..."
和image/
之间的部分,它就会告诉您格式。