我正在调整给定图像(保存在磁盘上)以调整不同尺寸:
var image = 'photos/pic';
var sizes = [1440, 1080, 720, 480];
for (var i = 0; i < sizes.length; i++) {
sharp(image + '.jpg')
.resize(sizes[i], sizes[i])
.toFile(image + '-' + sizes[i] + '.jpg');
}
这可以按预期工作,但我想还有改进的余地。
2000x2000
。如果有的话,从720x720
调整为480x480
而不是2000x2000
调整为480x480
的速度有何提高?考虑到我必须首先阅读720x720
文件并等待调整大小完成。答案 0 :(得分:0)
你可以使用蓝鸟承诺
来做到这一点const Promise = require('bluebird');
global.Promise = Promise;
var sizes = [{
path: 'large',
xy: 800
},{
path: 'medium',
xy: 300
},{
path: 'small',
xy: 100
}];
Promise.map(sizes, function(size) {
return sharp( img.buffer )
.resize( size.xy, size.xy )
.toFile( size.path );
});
src: - https://github.com/lovell/sharp/issues/154
我试过了,它正在100%工作
答案 1 :(得分:-1)
您可以使用Sharp JS的Clone方法
http://sharp.dimens.io/en/stable/api-input/#clone
该示例为您提供所需的一切
// Create the baseline changes
const pipeline = sharp().rotate();
pipeline.clone().resize(800, 600).pipe(firstWritableStream);
pipeline.clone().extract({ left: 20, top: 20, width: 100, height: 100
}).pipe(secondWritableStream);
readableStream.pipe(pipeline);
也可以将此用于承诺