0

我在 AWS Lambda 上使用了 sharp,它工作得很好,但是,当我尝试添加水印时,它会出错。

The input file is missing or of an unsupported image format

它在本地但在 AWS lambda 上运行良好;它给出了这个错误

function watermarkLogo(buffer, last) {
              sharp(buffer)
                .overlayWith('watermark.png', { gravity: sharp.gravity.center } )
                .toBuffer(versions[ind].format, function(err, buffer) {
                  if (err) last(err);
                  else last(null, buffer);
                });
          }

水印和 lambda 函数在同一个桶中

https://s3.ap-south-1.amazonaws.com/yallamotor-development-assets/watermark.png

我该如何解决这个问题

4

1 回答 1

1

要添加水印,您可以使用composite().

    let sharp = require('sharp');
    let imageBuffer = null;

    await sharp(buffer)
        .composite([{ input: './watermark.png', gravity: 'center' }])
        .sharpen()
        .withMetadata()
        .toBuffer()
        .then(function(outputBuffer) {
            imageBuffer = outputBuffer;
        });

return imageBuffer;

然后您可以使用 FTP 和缓冲区获取水印,然后将缓冲区传入composite.

于 2019-07-23T19:39:57.567 回答