Ошибка использования .overlayWith () в AWS Lambda в файле node.js - PullRequest
0 голосов
/ 31 августа 2018

Я использую Sharp на AWS Lambda, и он работает довольно хорошо, но, когда я пытаюсь добавить водяной знак, он выдает ошибку.

The input file is missing or of an unsupported image format

Работает нормально на локальной, но на AWS лямбда; это дает эту ошибку

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);
                });
          }

Водяной знак и лямбда-функция находятся в одном ведре

https://s3.ap -south-1.amazonaws.com / yallamotor-девелопмент-активы / watermark.png

Как я могу решить это

1 Ответ

0 голосов
/ 23 июля 2019

Для добавления водяного знака вы можете использовать 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.

...