Javascript Concat缓冲区或替代方法

Javascript Concat缓冲区或替代方法,javascript,node.js,express,Javascript,Node.js,Express,我想在不接触磁盘的情况下调整webshot模块的图像屏幕截图,所有操作都在内存中完成 这是我的 var webshot = require('webshot'); var fs = require('fs'); var sharp = require('sharp'); alldata = new Buffer(1024*1024); var options= { windowSize: { width: 1024 , height: 768 }, zoomFactor

我想在不接触磁盘的情况下调整
webshot
模块的图像屏幕截图,所有操作都在内存中完成

这是我的

var webshot = require('webshot');
var fs      = require('fs');
var sharp = require('sharp');

alldata = new Buffer(1024*1024);

var options= {
windowSize: {
    width: 1024
  , height: 768
},
zoomFactor:0.25,
renderDelay:500,
quality:50,
phantomConfig: {'ignore-ssl-errors': 'true'}
};

var file = fs.createWriteStream('google.png', {encoding: 'binary'});
var renderStream = webshot('google.com', options);

var completed = false;

renderStream.on('data', function(data) {
    console.log(Type(data));
    alldata.write(data);
});

renderStream.on('end', function(data) {
    completed=true;
});

require('deasync').loopWhile(function(){return !completed;});
由于
数据将以块的形式交付,因此我需要组合缓冲区,并在最后使用
Sharp
将图像转换为另一个大小:

var resizeTransform = sharp(thebuffer).resize(320, 270).max();
但我就是不能连接缓冲区,也不知道如何直接使用Sharp而不连接缓冲区。有什么好办法吗?

你可以用它来调整图像的大小

var webshot = require('webshot');
var fs = require('fs');
var sharp = require('sharp');

var options = {
    windowSize: {
        width: 1024,
        height: 768
    },
    zoomFactor: 0.25,
    renderDelay: 500,
    quality: 50,
    phantomConfig: { 'ignore-ssl-errors': 'true' }
};

var file = fs.createWriteStream('google.png', { encoding: 'binary' });
var renderStream = webshot('google.com', options);
const resizeStream = sharp().resize(320, 270).png();
//pipe your stream, get the webshot, resize it, then save to png
renderStream.pipe(resizeStream).pipe(file);
//since res is a writable stream, you can pipe the stream down to it just like the file stream.
//renderStream.pipe(resizeStream).pipe(res);

谢谢,如果我不想写文件怎么办。只需将其保存在流/内存中,然后通过res输出即可。write
res
是一个可写流,因此您也可以像可写文件流一样将流向下输送到
res