簡體   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