这是我在AWS上的第一个lambda函数。
我只想将S3上的JPG转换为PNG。到目前为止,我有这个:
'use strict';
let aws = require('aws-sdk');
let im = require('imagemagick');
let s3 = new aws.S3();
exports.handler = (event, context, callback) => {
const bucket = event.Records[0].s3.bucket.name;
const key = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
const s3params = {
Bucket: bucket,
Key: key
};
s3.getObject(s3params, function(err,s3obj) {
//s3obj has the image in .Body...
});
}
我一直试图找出如何使用imagemagick将此JPG转换为PNG。 convert函数似乎需要文件而不是缓冲区。我无法弄清楚如何去做,似乎没有我能找到的例子。
帮助!
答案 0 :(得分:0)
以下是我如何在lambda上使用graphicsmagick:
var gm = require('gm').subClass({ imageMagick: true });
请注意,由于5月初在ImageMagick库中发现的漏洞,AWS Lambda团队已在imagemagick预装模块中禁用了imagemagick某些功能(EPHEMRAL,URL,HTTPS,MVG和MSL)(请参阅https://imagetragick.com并在此进一步解释:AWS Lambda not working along with the gm module。通常情况下,您可以使用gm从网络中提取图像,然后将该流保存为您的png,但您可能会遇到上述问题