ysk*_*kin 0 javascript google-nativeclient
我想将HTML画布的图像发送到Google Chrome上的NaCl模块.在"dom方面",我有以下代码:
var NaClModule = .... // NaCl module denoted by <embed> tag
var canvas = .... // canvas element
canvas.addEventListener('click', function() {
var imageData = this.getContext('2d').getImageData(0, 0, this.width, this.height);
NaClModule.postMessage(imageData.data);
});
Run Code Online (Sandbox Code Playgroud)
imageData.data是Uint8ClampedArrayJavaScript控制台上的类型.所以我认为NaCl模块看到传递数据为pp::VarArrayBuffer
但是,NaCl模块实际上采用了传递数据,如pp::VarDictionary
key =原始数组的索引和值=原始数组的值(确认pp::Var::DebugString).
这是预期的行为吗?如果没有,我的代码是什么?
或者,还有其他方法将图像传递给NaCl模块吗?
小智 5
将画布传递到NaCl模块在地球示例中完成,以从jpeg加载纹理(请参阅SDK中的examples/demo/earth).
以下是该示例的摘录:
var imageData = context.getImageData(0, 0, img.width, img.height);
// Send NaCl module the raw image data obtained from canvas.
common.naclModule.postMessage({'message' : 'texture',
'name' : name,
'width' : img.width,
'height' : img.height,
'data' : imageData.data.buffer});
Run Code Online (Sandbox Code Playgroud)
所以看起来你只需要将代码更改为:
NaClModule.postMessage(imageData.data.buffer);
Run Code Online (Sandbox Code Playgroud)
它应该工作.
| 归档时间: |
|
| 查看次数: |
952 次 |
| 最近记录: |