2

我允许用户上传头像,但我想在上传时调整它们的大小。现在,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');
 });
4

1 回答 1

3

您可以通过 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
  });
于 2013-06-19T10:00:01.803 回答