保存像素,导致Node.js上的图像受损和不饱和

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

这是我正在使用的代码:

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

callback应该在pipe道上,而不是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()); });