在我的node.js代码中,每次通过作为TCP客户端的node.js和另一个TCP服务器之间的TCP连接接收图像时,都有一个缓存数组,我存储接收到的图像的内容:
var byBMP = new Buffer (imageSize);
然而 图像的大小,imageSize,每次都不同,这使得byBMP的大小相应地改变。这意味着这样的事情不断发生:
var byBMP = new Buffer (10000);
.... wait to receive another image
byBMP = new Buffer (30000);
.... wait to receive another image
byBMP = new Buffer (10000);
... etc
问题:
是否有更有效的方法可以通过BP调整数组大小。我调查了这个:How to empty an array in JavaScript?给了我一些想法,以便有效地清空一个数组,但是为了调整它,我需要你们的评论.node.js
答案 0 :(得分:1)
有效的方法是使用Streams而不是缓冲区。缓冲区会将图像内容保留在内存中,但内容不是很容易扩展。
相反,只需将下载流直接传输到文件输出:
imgDownloadStream.pipe( fs.createWriteStream('tmp-img') );
如果你要将img保留在内存中以执行转换,那么只需在流缓冲器部分通过时应用转换。