我目前正在處理顯示由C++服務器發送的圖像的WebSocket應用程序。 我見過一對夫婦的主題圍繞有,但我似乎無法在Firefox擺脫這種錯誤的:使用javascript和websockets從blob顯示圖像
圖片損壞或截斷:數據:圖像/ PNG; BASE64,[一些數據]
這裏是我用來顯示我的BLOB的Javascript代碼:
socket.onmessage = function(msg) {
var blob = msg.data;
var reader = new FileReader();
reader.onloadend = function() {
var string = reader.result;
var buffer = Base64.encode(string);
var data = "data:image/png;base64,"+buffer;
var image = document.getElementById('image');
image.src = data;
};
reader.readAsBinaryString(blob);
}
我用一個紅點,我在這個話題中的形象:https://stackoverflow.com/a/4478878/1464608 而Base64編碼類是從這裏:https://stackoverflow.com/a/246813/1464608
但是我得到的base64結果不匹配,Firefox檢索到了一個圖像被損壞的錯誤。
我知道這不是很多的信息,但我沒有線索去哪裏尋找:/ 任何幫助都是值得歡迎的!
也許你可以嘗試在別處解碼你的編碼圖像,以確保你的編碼/解碼方法是正確的。 –
嘗試將'Base64.encode(string)'的結果與'btoa(string)'進行比較。大多數base64庫的操作有點不同,即對於高值字節使用'btoa';也許這是你的問題? – apsillers
我已經嘗試btoa(),它確實給不同的結果,仍然不工作壽。 – guitio2002