Base64解码图像PHP


Base64 decode image PHP

我正在尝试用PHP解码SQL数据库中的图像blob(它存储在base64_encode之后)。

我正在使用

header('Pragma: public');
header('Cache-control: max-age=0');
header('Content-Type: image');
header("Content-Encoding: gzip");
header("Vary: Accept-Encoding");
echo gzencode( base64_decode ($result[0]['Icon']) ); // result is the result of query from DB

当我的浏览器语言是英语时,它有时会工作,但如果我的浏览器不是英语,它就无法正确解码。

我正在使用charles代理进行调试以查看响应。我无法在这里发布回复。英语响应的大小比其他响应小3个字节。

但对于其他语言来说,它是这样的,有额外的3个字节。

T�e�s�t�i�n�g� � 

我在数据库中检查了图像的编码字符串。它在DB中是相同的,但在发送响应时是不同的。因此,如果语言是英语,则图像被正确地显示,但是如果语言不是英语,则该图像被破坏。请帮帮我。

我自己解决了这个问题。原因是PHP在开头添加了UTF-8字节顺序标记(BOM)。因此,当使用ob_clean()清理输出缓冲区时,这个问题得到了解决;以下操作非常成功。

header('Pragma: public');
header('Cache-control: max-age=0');
header('Content-Type: image');
header("Content-Encoding: gzip");
header("Vary: Accept-Encoding");
ob_clean();
echo gzencode( base64_decode ($result[0]['Icon']) ); // result is the result of query from DB

您知道图像的名称或至少知道扩展名吗?您必须在页眉内容类型中使用它。例如标题('Content-type:image/jpeg');