Skip to content

Instantly share code, notes, and snippets.

@ademcan
Created August 18, 2020 13:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ademcan/2ff5bb7a40a60381a73d40294f020dea to your computer and use it in GitHub Desktop.
Save ademcan/2ff5bb7a40a60381a73d40294f020dea to your computer and use it in GitHub Desktop.
var AWS = require("aws-sdk");
var IM = require('imagemagick');
var FS = require('fs');
var compressedJpegFileQuality = 0.60;
var compressedPngFileQuality = 0.95;
exports.handler = (event, context, callback) => {
var s3 = new AWS.S3();
var sourceBucket = "klindoo-profile-pictures";
var destinationBucket = "klindoo-profile-pictures-compressed";
var objectKey = event.Records[0].s3.object.key;
var getObjectParams = {
Bucket: sourceBucket,
Key: objectKey
};
s3.getObject(getObjectParams, function(err, data) {
if (err) {
console.log(err, err.stack);
} else {
console.log("S3 object retrieval get successful.");
var resizedFileName = "/tmp/" + objectKey;
var quality;
if (resizedFileName.toLowerCase().includes("png")){
quality = compressedPngFileQuality;
}
else {
quality = compressedJpegFileQuality;
}
var resize_req = { width:"100%", height:"100%", srcData:data.Body, dstPath: resizedFileName, quality: quality, progressive: true, strip: true };
IM.resize(resize_req, function(err, stdout) {
if (err) {
throw err;
}
console.log('stdout:', stdout);
var content = new Buffer(FS.readFileSync(resizedFileName));
var uploadParams = { Bucket: destinationBucket, Key: objectKey, Body: content, ContentType: data.ContentType, StorageClass: "STANDARD" };
s3.upload(uploadParams, function(err, data) {
if (err) {
console.log(err, err.stack);
} else{
console.log("S3 compressed object upload successful.");
}
});
});
}
});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment