mirror of
https://github.com/fnproject/fn.git
synced 2022-10-28 21:29:17 +03:00
71 lines
1.6 KiB
JavaScript
71 lines
1.6 KiB
JavaScript
var im = require('imagemagick');
|
|
var fs = require('fs');
|
|
var AWS = require('aws-sdk');
|
|
|
|
// cb(err, resized) is called with true if resized.
|
|
function resizeIfRequired(err, features, fileSrc, fileDst, cb) {
|
|
if (err) {
|
|
cb(err, false);
|
|
return;
|
|
}
|
|
|
|
var targetWidth = 1024;
|
|
if (features.width > targetWidth)
|
|
{
|
|
im.resize({
|
|
srcPath : fileSrc,
|
|
dstPath : fileDst,
|
|
width : targetWidth,
|
|
format: 'jpg'
|
|
}, function(err) {
|
|
if (err) {
|
|
cb(err, false);
|
|
} else {
|
|
cb(null, true);
|
|
}
|
|
});
|
|
} else {
|
|
cb(null, false);
|
|
}
|
|
}
|
|
|
|
exports.run = function(event, context) {
|
|
var bucketName = event['bucket']
|
|
var srcImageKey = event['srcKey']
|
|
var dstImageKey = event['dstKey']
|
|
|
|
var s3 = new AWS.S3();
|
|
|
|
s3.getObject({
|
|
Bucket: bucketName,
|
|
Key: srcImageKey
|
|
}, function (err, data) {
|
|
|
|
if (err) throw err;
|
|
|
|
var fileSrc = '/tmp/image-src.dat';
|
|
var fileDst = '/tmp/image-dst.dat'
|
|
fs.writeFileSync(fileSrc, data.Body)
|
|
|
|
im.identify(fileSrc, function(err, features) {
|
|
resizeIfRequired(err, features, fileSrc, fileDst, function(err, resized) {
|
|
if (err) throw err;
|
|
if (resized) {
|
|
s3.putObject({
|
|
Bucket:bucketName,
|
|
Key: dstImageKey,
|
|
Body: fs.createReadStream(fileDst),
|
|
ContentType: 'image/jpeg',
|
|
ACL: 'public-read',
|
|
}, function (err, data) {
|
|
if (err) throw err;
|
|
context.succeed("Image updated");
|
|
});
|
|
} else {
|
|
context.succeed("Image not updated");
|
|
}
|
|
});
|
|
});
|
|
});
|
|
}
|