如何使用sharp.js将图像从缓冲区存储到node.js中的文件系统
Posted
技术标签:
【中文标题】如何使用sharp.js将图像从缓冲区存储到node.js中的文件系统【英文标题】:how to store image from buffer to file system in node.js using sharp.js 【发布时间】:2018-11-30 02:21:05 【问题描述】:我在 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)
将图片上传为 png 格式或任何其他格式
使用.toFormat('jpeg')
将该图像转换为JPEG
并发送到
缓冲区
【问题讨论】:
nodejs.org/api/… 这个问题是否完整?好像少了一些东西 @Geuis 尝试过,但格式正在改变。, 您需要提供示例代码来演示您的问题。 @RobertMennell 是的,罗伯特,问题是完整的。,我转换了文件但无法保存它们,你能建议一种方法吗? 【参考方案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);
);
【讨论】:
【参考方案2】:您的代码没有“缓冲区”。你应该在写数据。
.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');
);
【讨论】:
谢谢,但是如果我上传 jpg 并转换为 png 怎么办? .. 文件格式是我们想要的 ., 然后操作 newFile.jpg 以获得正确的扩展名。如果您的变量temp
已经在其扩展名中反映了所需的文件类型,那么只需使用它。否则修复它。
好吧,如果我想将扩展名为 .webp 的图像处理为 tiff .,好吧,文件名不应更改为原始名称 .,如果我可以怎么办?
文件名是动态的,根据查询参数,toFile 是动态的以上是关于如何使用sharp.js将图像从缓冲区存储到node.js中的文件系统的主要内容,如果未能解决你的问题,请参考以下文章