我可以在NodeJs中使用Sharp直接处理缓冲区数据吗

Can I directly process buffer data using Sharp in NodeJs

我从外部获取缓冲区数据到我的程序,我想处理缓冲区数据并将其也作为缓冲区发送。 所以我不想将缓冲区转换为图像。 我该怎么做?

我试过这种方法,但是不行。

const process = await sharp(incoming_buffer_data).grayscale();

fs.writeFileSync('test.jpg', process); // 我正在使用它进行测试。总是我得到 worng 图像格式作为错误

假设 incoming_buffer_data 确实是一个缓冲区并且具有受支持的图像格式。

您可以将输出作为缓冲区,然后像您尝试的那样将其发送到 fs.writeFileSync()

const buffer = await sharp(incoming_buffer_data).grayscale().toBuffer();
fs.writeFileSync('test.jpg', buffer);

或者直接写入文件

await sharp(incoming_buffer_data).grayscale().toFile('test.jpg');

工作片段。

sharp(buffer)
  .greyscale()
  .toFile('file.png', (err, info) => {
    // file is stored as file.png in current directory
})

你甚至可以做其他事情,比如调整大小

sharp(buffer)
  .greyscale()
  .resize(512,512,{fit:'contain'})
  .toFile('file.png', (err, info) => {
    // file is stored as file.png in current directory
})