Tôi hiện đang làm việc trên một ứng dụng WebSocket hiển thị hình ảnh được gửi bởi một máy chủ C++. Tôi đã nhìn thấy một vài chủ đề xung quanh đó nhưng tôi dường như không thể thoát khỏi lỗi này trong Firefox:Hiển thị hình ảnh từ blob bằng cách sử dụng javascript và websockets
ảnh bị hỏng hoặc cắt ngắn: Dữ liệu: image/png; base64, [một số dữ liệu]
Dưới đây là các mã Javascript tôi đang sử dụng để hiển thị blob của tôi:
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);
}
tôi đang sử dụng hình ảnh của một dấu chấm màu đỏ mà tôi tìm thấy về chủ đề này: https://stackoverflow.com/a/4478878/1464608 Và lớp Base64 là từ ở đây: https://stackoverflow.com/a/246813/1464608
Nhưng kết quả base64 mà tôi nhận được không khớp và Firefox truy xuất cho tôi lỗi của hình ảnh bị hỏng.
Tôi biết điều này không phải là nhiều thông tin nhưng tôi không có một đầu mối để tìm:/ Bất kỳ trợ giúp nào được hoan nghênh hơn !!
Có thể bạn có thể thử giải mã hình ảnh được mã hóa của mình ở nơi khác để đảm bảo rằng phương pháp mã hóa/giải mã của bạn đúng. –
Thử so sánh kết quả của 'Base64.encode (chuỗi)' với 'btoa (chuỗi)'. Hầu hết các thư viện base64 hoạt động hơi khác một chút so với 'btoa' cho các byte có giá trị cao; có lẽ đó là vấn đề của bạn? – apsillers
Tôi đã thử btoa() và nó thực sự đưa ra một kết quả khác nhau mà vẫn không làm việc tho. – guitio2002