nodejs:将pngjsstream转换为base64

我有一个PNG对象,我使用node-png创build,根据文档,它是一个“ 可读写的stream ”。

我想将PNG对象转换为base64,并通过socket.io发送给客户端,我将这个string放在一个图片src中。

我已经尝试了很多东西,但似乎将stream转换为string并不重要。

我怎样才能做到这一点?

请注意,数据是在节点内而不是从文件系统创build的。

谢谢!

谢谢您的帮助。 在这里,我为未来的读者做了什么( 这也有帮助 ):

png.pack(); var chunks = []; png.on('data', function(chunk) { chunks.push(chunk); console.log('chunk:', chunk.length); }); png.on('end', function() { var result = Buffer.concat(chunks); console.log('final result:', result.length); io.sockets.emit('image', result.toString('base64')); }); 

你不想将stream转换成string,但它的可读块:

 stream.on('readable', function() { var string = stream.read().toString('base64'); // send through websocket }); 

您也可以通过stream来完成整个数据的操作:

 var data = ''; stream.on('readable', function() { data += stream.read().toString('base64'); }); stream.on('end', function() { console.log(data); }); 

取决于客户是否要求完整的png图片可用,或者是否有单块。

但是,如果你有兴趣如何在一个实际的例子看起来像(通过HTML5拖放上传图像),你可以结帐使者 。