如何将Uint8ClampedArray转换为类似节点的Buffer;

时间:2014-01-30 16:29:07

标签: javascript wordpress node.js

我正在使用xmlrpc将图像发布到wordpress的节点module上工作。该 postIMGRPC方法接受原始图像数据并通过wp.uploadFile uri提交。我已经使用图像文件在节点中成功测试了该方法:

  var imgData;
  fs.readFile("anyImage.jpg", function(e,d){  imgData = d  }   );
  wp.postIMGRPC("anyImage.jpg", imgData, 1)
      .then(function(r){console.log(r)})

现在,我希望能够在客户端javascript中获取画布的imgData,并通过我的node.js模块以相同的方式提交它:

  var c=document.getElementById("myCanvas");
  var ctx=c.getContext("2d");
  var img=document.getElementById("myImg");
  ctx.drawImage(img,0,0);

  var imgData = ctx.getImageData(0,0,250,300);
  var data = imgData.data;

但是,当我尝试将数据(类型Uint8ClampedArray)传递到节点模块时,上传的文件是空白图像。我试过了:

  wp.postIMGRPC("anyImage.jpg", imgDataFromJS, 1)
      .then(function(r){console.log(r)})

以及

 buf = new Buffer(imgDataFromJS)
 wp.postIMGRPC("anyImage.jpg", buf, 1)
      .then(function(r){console.log(r)})

如何将Uint8ClampedArrayimgData转换为Buffer,与fs.readFile()返回的{{1}}类似?

1 个答案:

答案 0 :(得分:3)

使用Buffer.from,如:

...
var imgData = ctx.getImageData(0,0,250,300);
var data = imgData.data;
var buf = Buffer.from(data);