Attualmente sto lavorando a un'applicazione WebSocket che sta visualizzando immagini inviate da un server C++. Ho visto un paio di argomenti intorno lì, ma io non riesco a sbarazzarsi di questo errore in Firefox:Visualizza l'immagine dal BLOB usando javascript e websockets
Immagine corrotto o troncato: Dati: image/png; base64, [alcuni dati]
Ecco il codice Javascript che sto usando per mostrare il mio 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);
}
sto usando l'immagine di un puntino rosso che ho trovato su questo argomento: https://stackoverflow.com/a/4478878/1464608 E la classe Base64 è da qui: https://stackoverflow.com/a/246813/1464608
Ma il risultato base64 che ottengo non corrisponde e Firefox mi recupera un errore dell'immagine corrotta.
So che questo non è molte informazioni ma non ho la minima idea di dove guardare:/ Qualsiasi aiuto è più che benvenuto !!
Forse puoi provare a decodificare l'immagine codificata altrove per essere sicuro che il tuo metodo di codifica/decodifica è corretta. –
Prova a confrontare il risultato di 'Base64.encode (stringa)' a 'btoa (stringa)'. La maggior parte delle librerie base64 operano in modo un po 'diverso da 'btoa' per i byte di valore elevato; forse questo è il tuo problema? – apsillers
Ho già provato btoa() e in effetti sta dando un risultato diverso che non funziona ancora. – guitio2002