[英]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.