多次调整一张图像的大小

Chr*_*ris 5 node.js sharp

我正在将给定的图像(保存在磁盘上)调整为不同的大小:

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');       
}
Run Code Online (Sandbox Code Playgroud)

这按预期工作,但我想还有改进的余地。

  • for 循环会导致任何问题吗?如果是,有没有更好的方法来解决这个问题?
  • 等待生成的图片调整大小并将其用于下一个调整大小过程会更快吗?假设原始图片是2000x2000. 如果有的话,从调整720x720480x480而不是2000x2000到的速度改进480x480是什么?考虑到我必须先读取720x720文件并等待调整大小完成。
  • 我应该在“主”节点线程上调整大小还是分叉子进程?无论如何,它们都是异步运行的,对吗?

Ian*_*ner 0

您可以使用 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);
Run Code Online (Sandbox Code Playgroud)

也可以与 Promise 一起使用