保存像素导致Node.js上的图像损坏和去饱和

时间:2017-06-24 13:40:51

标签: javascript node.js

我正在使用save-pixels和get-pixels npm模块从DataURL获取ndarray并保存像素以将图像ndarray转换为DataURL。但是在使用save-image制作DataURL时我遇到了一些问题。我这样做了吗?有更好的方法吗?

这是我正在使用的代码:

var buffer = require('fs').createWriteStream('output.txt');
var enc = require('base64-stream').encode();
savePixels(pixels, 'png').on('end', function() {
    //Writes a DataURL to  output.txt
    buffer.write("data:image/png;base64,"+enc.read().toString());
}).pipe(enc);

我得到的问题:图像变得不饱和,PNG图像的DataURL不完整。

完整参考: http://github.com/publiclab/image-sequencer/issues/25

1 个答案:

答案 0 :(得分:1)

回调应该在管道而不是savePixels上。这导致了不完整的图像。 所以代码应该是这样的:

var buffer = require('fs').createWriteStream('output.txt');
var enc = require('base64-stream').encode();
savePixels(pixels, 'png').pipe(enc).on('end', function() {
    //Writes a DataURL to  output.txt
    buffer.write("data:image/png;base64,"+enc.read().toString());
});