2

我在 node.js 中使用 sharp.js 进行图像处理

我的代码

sharp(path)
        .toFormat('jpeg')
        .toBuffer((err, data, info) => {
            fs.writeFile(temp, buffer, { flag: 'w' }, function() {
                response.sendFile(temp);
            });
        });

这里 fs 中的 temp 表示“路径” var temp= imageDir + request.params.id;http://localhost:2000/images/we.png

  1. 将图像上传为 png 格式或任何其他格式

  2. 将该图像转换为JPEG使用.toFormat('jpeg')并发送到缓冲区

  3. 想将该图像从缓冲区保存到
4

2 回答 2

4

您的代码没有“缓冲区”。你应该写数据。

.toBuffer((err, data, info) => {
        fs.writeFile(temp, data, { flag: 'w' }, function() {
            response.sendFile(temp);
        });
    });

但你最好使用 toFile 而不是 toBuffer:

sharp('originalFile.jpg').
        resize(330,null).
        flatten().
        toFile('newFile.jpg', function(err){
            if(err){
                response.sendStatus(500);
                return;
            }
            response.sendFile('newFile.jpg');
        });
于 2018-06-20T21:17:42.620 回答
1

你可以这样做

sharp(req.files[0].path).resize(400, 200).toFile('uploads/' + 'thumbnail-' + req.files[0].originalname, (err, sharp) => {
            if (err) {
                console.error(err);
            }
            else {
                console.log(sharp);
            }
        });
于 2020-03-20T10:41:51.293 回答