Używam websockify
do wyświetlania obrazów z serwera Pythona na płótnie HTML5.Odbieranie obrazu za pośrednictwem websocket
Myślę, że udało mi się pomyślnie wysłać obrazy z mojego serwera Pythona, ale nie jestem w stanie wyświetlić obrazów na moim płótnie.
Myślę, że problem dotyczy liczby bajtów, które próbuję wyświetlić na płótnie i uważam, że nie czekam, aż cały obraz zostanie odebrany, a następnie wyświetlenie obrazu na płótnie.
Do tej pory posiadam:
Funkcja wiadomości. Kiedy wysłałem obraz mam 12 MESSAGERECEIVED
w konsoli
ws.on('message', function() {
//console.log("MESSAGERECEIVED!")
msg(ws.rQshiftStr());
});
Funkcją msg gdzie mogę otrzymać ciąg i próbuję wyświetlić go na płótnie. Wywołuję metodę 12 razy dla każdego zdjęcia. Format użądleniu jest 'xÙõKþ°pãüCY
:
function msg(str) {
//console.log(str);
console.log("RELOAD");
var ctx = cv.getContext('2d');
var img = new Image();
//console.log(str);
img.src = "data:image/png;base64," + str;
img.onload = function() {
ctx.drawImage(img,0,0);
}
}
Wszelkie sugestie, w jaki sposób rozwiązać ten problem?
Nie należy przesyłać obrazów jako base64 na stronach internetowych, chyba że klient nie obsługuje projektów hybi. Base64 poniesie 33% narzutów. Dlatego preferowane jest wysyłanie jako binarne. – einaros
Myślę, że 'websockify' konwertuje wszystko, co jest przez nią przekazywane, na base64. – glarkou
Jeśli tak jest, to jest okropne. Poszukaj kolejnej implementacji websocket. – einaros