javascript - 我可以使用 node-gm 调整内存中图像的大小还是需要先保存它?

标签 javascript node.js image-processing image-uploading graphicsmagick

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

相关文章:

image-processing - 基于 GPU 的拉普拉斯金字塔

node.js - pg-promise:使用 pgp.helpers.update 更新包含数组文本列的行

javascript - 映射一个对象并使用 native JS 更改一个属性值

c# - 如何检测图像中能量最低的区域

javascript - Foundation 5 pinterest 风格的模态弹出窗口

javascript - 如何在 Node.js 中进行 Craigslist 电子邮件转发(接收电子邮件到自动生成的电子邮件地址并转发)?

php - 缩放水印以适合父图像

php - Cookie - PHP 与 Javascript

javascript - 如何将本地存储添加到我的项目中?

javascript - 在 jquery 中获取文本框值但为空