Javascript 从二进制数据在html5画布中显示图像

Javascript 从二进制数据在html5画布中显示图像,javascript,google-app-engine,python-2.7,html5-canvas,channel-api,Javascript,Google App Engine,Python 2.7,Html5 Canvas,Channel Api,我正试图通过谷歌应用程序引擎频道api从画布向另一个客户端发送一个图像,然后该客户端将显示相同的图像。正在接收消息,但未显示图像 在发送端: var image = context.getImageData(0, 0, imageCanvas.width, imageCanvas.height); var buffer = new ArrayBuffer(image.data.length); var bytes = new Uint8Array(buffer); for (var i=0; i

我正试图通过谷歌应用程序引擎频道api从画布向另一个客户端发送一个图像,然后该客户端将显示相同的图像。正在接收消息,但未显示图像

在发送端:

var image = context.getImageData(0, 0, imageCanvas.width, imageCanvas.height);
var buffer = new ArrayBuffer(image.data.length);
var bytes = new Uint8Array(buffer);
for (var i=0; i<bytes.length; i++) {
    bytes[i] = image.data[i];
}

sendMessage({image: buffer});
var image=context.getImageData(0,0,imageCanvas.width,imageCanvas.height);
var buffer=newarraybuffer(image.data.length);
var字节=新的Uint8Array(缓冲区);

对于(var i=0;i将drawImage与putImageData交换

createImageData()返回一个ImageData对象

您在这里也犯了一个错误:
for(var i=0;i将drawImage与putImageData交换

createImageData()返回一个ImageData对象

您在这里也犯了一个错误:
for(var i=0;Ithank等待您的回答。我不再收到类型错误。但是图像仍然没有在画布中绘制。谢谢,但我认为肯定还有另一个错误,而且它仍然不起作用…@AlecHewitt好的,如果您能写一个新问题,我们可以单独解决这个问题(提示:这与您这里的代码无关)。请参阅:感谢您在这个问题上的帮助。此后,我采取了一种稍微不同的方法,使用方法toDataURL()。这具有在同一页面上的画布之间工作的优点,但在我尝试将其发送到服务器时会产生“InvalidMessageError”。正如您所建议的,我创建了一个新问题,可以在此处看到:感谢您的回答。我不再收到类型错误。但是,画布中仍然没有绘制图像。谢谢,但我认为肯定还有另一个错误,因为它仍然不起作用…@AlecHewitt好吧,如果你能写一个新问题,我们可以单独解决这个问题(提示:这与你这里的代码无关)。请参阅:感谢您在这个问题上的帮助。此后,我采取了一种稍微不同的方法,使用方法toDataURL()。这具有在同一页面上的画布之间工作的优势,但在我尝试将其发送到服务器时会产生“InvalidMessageError”。正如您所建议的,我创建了一个新问题,可以在此处看到:
var bytes = new Uint8Array(buffer.size);
var image = context.createImageData(imageCanvas.width, imageCanvas.height);
for (var i=0; i<image.length; i++) {
    image.data[i] = bytes[i];
}
context.drawImage(image, 0, 0);