繁体   English   中英

Base64解码图像PHP

[英]Base64 decode image PHP

我正在尝试从PHP中的SQL数据库(存储在base64_encode之后的位置)中解码图像Blob。

我在用

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� � 

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

我自己修复了此问题,原因是因为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中使用它。 例如header('Content-type:image / jpeg');

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM