Wie der Titel sagt, habe ich eine Byte-Array für den Inhalt eines Bildes (kann jpeg oder png sein).Wie zeichne ein Bild auf der Leinwand von einem Byte-Array in JPEG-oder PNG-Format
ich, dass auf einer regulären Leinwand Objekt
<canvas id='thecanvas'></canvas>
Wie kann ich das tun zeichnen wollen?
UPDATE ich versuchte, diese (unsuccesfully): (imgData ein PNG als Byte-Array gesendet wird, durch WebSockify an den Client "wie sie ist")
function draw(imgData) {
"use strict";
var canvas = document.getElementById("myCanvas");
var ctx = canvas.getContext("2d");
var rdr = new FileReader();
var imgBlob = new Blob([imgData], {type: "image/png"});
rdr.readAsBinaryString(imgBlob);
rdr.onload = function (data) {
console.log("Filereader success");
var img = new Image();
img.onload = function() {
console.log("Image Onload");
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
};
img.onerror = function (stuff) {
console.log("Img Onerror:", stuff);
};
img.src = "data:image/png;base64," + window.btoa(rdr.result);
};
}
I immer img.onerror()
Auch Nach dem Lesen der Datei mit einem HEX-Editor auf meinem Dateisystem kann ich sehen, dass das Byte-Array identisch mit der ursprünglichen Datei ist.
Sie dies gesehen haben: http://stackoverflow.com/questions/12041851/converting-bytes-to-an-image-for-drawing-on-a-html5- Leinwand ? –
@HaunsTM Nein! Vielen Dank. Ich untersuche das. Wenn das mein Problem löst, lösche ich die Frage – Ben
Sie müssen uns ein wenig darüber erzählen, in welchem Format Ihr Byte-Array ist: Ist es rohe Pixel und in diesem Fall, wie sind sie bestellt (RGB, RGBA, BGR etc.), wenn nicht, stellen sie ein kodiertes Bild dar und wenn ja, welche Kodierung (Base-64, Roh-komprimiertes JPEG/PNG)? – K3N