我允许用户上传头像,但我想在上传时调整它们的大小。现在,gm 似乎让我在调整文件大小之前先将文件保存到磁盘。是否可以在收到传入请求时调整其大小?
类似这样的事情:
var readStream = fs.createReadStream(req.files['profile-picture']['path']);
gm(req.files['profile-picture']['path'], 'img.jpg')
.write('/path/to/directory/img.jpg', function (err) {
if (!err) console.log('done');
});
最佳答案
您可以通过 gm 传输流,而不需要将文件保存到光盘!您甚至可以一个接一个地执行多项操作,因为 gm 函数是可链接的(在我的示例中,我调整图像大小,然后从中间裁剪它(因此是重力函数)
gm(req.files['profile-picture']['path'], 'img.jpg')
.resize("100^", "100^")
.gravity('Center')
.crop(100, 100)
.stream(function (err, stdout, stderr) {
// do whatever you want with your output stream (stdout) here
});
关于javascript - 我可以使用 node-gm 调整内存中图像的大小还是需要先保存它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17186522/