2013-11-15 55 views
3

我想通过websocket将图像流式传输到网页。数据在RGBA中。如何将博客更改为图像数据?如何将blob转换为imagedata?

这是我目前的代码,它不起作用,它会很慢。有没有一种直接的方式将event.data分配给画布的图像数据?

void onMessage(MessageEvent event) 
    { 
    print("received!"); 
    var imgData = canvas.getImageData(0, 0, 100, 100); 
    var j = 0; 
    for (var i=0;i<imgData.data.length;i+=4) 
    { 
     imgData.data[i+0]=event.data[j]; 
     imgData.data[i+1]=event.data[j+1]; 
     imgData.data[i+2]=event.data[j+2]; 
     imgData.data[i+3]=255; 
     j+=3; 
    } 
    canvas.putImageData(imgData,0,0); 

    } 
+0

这可能有助于[使用飞镖下载一个PNG文件(二进制文件),并显示它不工作(HTTP: //stackoverflow.com/questions/18290998/using-dart-to-download-a-png-file-binary-file-and-displaying-it-not-working) –

回答

0

在Firefox上,您可以使用toBlob方法。将图像数据放在临时画布上并调用Blob方法。概念例子证明:

var canvas  = document.createElement('canvas'); 
canvas.width = imageData.width; 
canvas.height = imageData.width; 
me._dstCanvas.getContext('2d').putImageData(a.dstImgData, 0, 0); 
me._dstCanvas.toBlob(function(blob) { 
     blob// this is yout file 
}, 'image/png', 1); 

详细看看莫兹开发: https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/toBlob