node.js编码图像以保存到webOS中的文件

时间:2011-05-04 16:47:54

标签: javascript html5 node.js webos

  

可能重复:
  save html5 canvas element to file using webos

这里img变量是从这里使用开源Png生成代码中提取的。

我已经使用了这个库并在我的画布图像数据像素数组

上进行了操作
 EditorAssistant.prototype.getDataURL = function(width,height,data){   
 var p = new PNGlib(height, width, 256); // construcor takes height, weight and color-depth
 var background = p.color(0, 0, 0, 0); // set the background transparent

for (var i = 0, n = data.length; i < n; i += 4) {
    var x = i * 10;
    var y = Math.sin(i) * Math.sin(i) * 50 + 50;
    // use a color triad of Microsofts million dollar color
      p.buffer[p.index(Math.floor(x), Math.floor(y))] = p.color(data[i], data[i+1],  data[i+2]);
}

return 'data:image/png;base64,'+p.getBase64() ;
}

这里的x和y是什么我不知道我只想把我的像素阵列输出到这个PNG

老实说,我是node.js的新手。我只是有一个命中和试用APProach ...上面生成的imgdata作为数据传递给此代码.. 代码有两个问题 1:它创建一个大小等于写入文件的字节数的文件,但它是空的我相信它是一些编码问题... 2:此代码不会将实际的画布像素数组保存在它创建的文件中......

var fs = IMPORTS.require('fs');
var path = IMPORTS.require('path');


var buff = new Buffer(data,'binary').toString('base64');

path.exists('images/', function(exists     ){
 if (exists) {

   fs.open('images/icon.png', 'w', 666, function( e, id ) {

      fs.write( id,  buff, null, 'binary', function(err,written){
        if(err)
            callback({
                error: false,
                reply: err
            });
        if(written){
                callback({
                error: false,
                reply: buff.toString()
            });
        }   
        fs.close(id, function(){
            callback({
                error: false,
                reply: 'closed'
            });
        });
      });
    });

}
else {
    callback({
        error: true,
        reply: 'File did not exist.'
    });
 }
   }
})
帮助我PLZ thnks

0 个答案:

没有答案