Aktualnie pracuję nad aplikacją WebSocket, która wyświetla obrazy wysyłane przez serwer C++. Widziałem kilka tematów, wokół tam, ale ja nie potrafię pozbyć się tego błędu w Firefoksie:Wyświetl obraz z obiektu blob za pomocą javascript i stron internetowych
Obraz uszkodzony lub ściętego: data: image/png; base64 [niektóre dane]
Oto kod JavaScript używam do wyświetlania mojego blob:
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);
}
Używam obraz czerwoną kropką, które znalazłem na ten temat: https://stackoverflow.com/a/4478878/1464608 a klasa jest z Base64 tutaj: https://stackoverflow.com/a/246813/1464608
Ale wynik base64, który otrzymuję, nie jest zgodny, a Firefox pobiera błąd w obrazie, który jest uszkodzony.
Wiem, że to niewiele informacji, ale nie mam pojęcia, gdzie szukać:/ Każda pomoc jest więcej niż mile widziany !!
Może możesz spróbować odszyfrować kodowany obraz w innym miejscu, aby mieć pewność, że twoja metoda kodowania/dekodowania jest poprawne. –
Spróbuj porównać wynik 'Base64.encode (napis)' do 'btoa (ciąg)'. Większość bibliotek base64 działa nieco inaczej niż "btoa" dla bajtów o dużej wartości; może to twój problem? – apsillers
Już próbowałem btoa() i rzeczywiście daje inny wynik, który wciąż nie działa. – guitio2002