我正在使用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)})
如何将Uint8ClampedArray
从imgData
转换为Buffer
,与fs.readFile()
返回的{{1}}类似?
答案 0 :(得分:3)
使用Buffer.from
,如:
...
var imgData = ctx.getImageData(0,0,250,300);
var data = imgData.data;
var buf = Buffer.from(data);