使用 graphicMagic 调整大小后将图像上传到 aws s3 存储桶

Image upload to aws s3 bucket after resizing with graphicMagic

我正在使用 graphicMagic 调整图像大小,然后再将其上传到 aws s3 存储桶。下面的代码上传了一个 0 字节大小的图像,尽管 s3 上传的响应很好。以下代码是我正在做的。路径为需要上传图片的路径。密钥是使文件名唯一的散列密钥。

gm(path)
  .resize(100,100)
  .stream(function(err, stdout, stderr){
      if(err){
              console.log("Error resizing image. Message:",err);
      }
      else{
          console.log(stdout);
          var data = {
              Bucket: 'my-bucket',
              Key: key+"_thumb.jpg",
              Body: stdout,
              ACL: "public-read",
              ContentType:"image/jpeg"
          };
          p1 = s3.upload(data).promise();
      }
  });

我认为 stdout 不是正确的做法,但我该如何让它工作。

你的代码没问题,你缺少 gm 依赖项:imagemagickgraphicsmagick,如果缺少其中之一,不会触发错误,但你会得到一个 0 字节的文件。

取决于你的OS:

Ubuntu/Debian

sudo apt-get install graphicsmagick
# or
sudo apt-get install imagemagick

Mac OS

brew install graphicsmagick
brew install imagemagick

对于windows或其他OS,检查: