在node.js中的AWS Lambda上使用.overlayWith()时出错
我在AWS Lambda上使用sharp,它工作得很好,但是,当我尝试添加水印时,它会给出一个错误在node.js中的AWS Lambda上使用.overlayWith()时出错,node.js,amazon-web-services,amazon-s3,aws-lambda,sharp,Node.js,Amazon Web Services,Amazon S3,Aws Lambda,Sharp,我在AWS Lambda上使用sharp,它工作得很好,但是,当我尝试添加水印时,它会给出一个错误 The input file is missing or of an unsupported image format 它在本地服务器上运行良好,但在AWS lambda上运行良好;它给出了这个错误 function watermarkLogo(buffer, last) { sharp(buffer) .overlayWith('wa
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函数在同一个存储桶中
如何解决此问题要添加水印,您可以使用复合水印
然后,您可以使用FTP和缓冲区获取水印,然后以复合方式传递缓冲区。可能是“水印.png”文件丢失,您可以在AWS控制台上重新检查并确保该文件存在。@hoangdv我再次检查它的位置。我更新了问题并给出了链接alsoHix,您的Lambda函数将存储在您案例的节点容器中,因此代码将无法获取您的文件。s3 bucket仅存储lambda代码,当您使用选项Upload a file from Amazon s3 Upload:D创建/更新代码输入类型的lambda函数时,系统只需复制代码而不复制图像。您可以制作一个包含代码和图像的zip文件,然后上传到lambda函数或s3。你可以在任何地方看到任何东西
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;