const cloudinary = require('cloudinary');
const async = require("async");
cloudinary.config({
cloud_name: "<cloud_name>",
api_key: "<api_key>",
api_secret: "<api_secret>"
});
var baseImageUrl = "https://res.cloudinary.com/yakir/image/upload/v1578887770/r69yfic0g5ndp7vkv5rb.png";
var backgroundColors = ["#D9D9D9", "#F1E7DD", "#F7EABC", "#C7DCE8", "#FFFFFF"];
var delayBetweenFrames = 500;
createGif(baseImageUrl, backgroundColors, delayBetweenFrames, function (err, gifUrl) {
if (err) {
console.log(err)
} else {
console.log(gifUrl)
}
})
function createGif(image_url, colors, delay, callback) {
let tag = new Date().getTime();
let imagesToUpload = [];
for (var i = 0, len = colors.length; i < len; i++) {
imagesToUpload.push({
src: image_url,
params: {
tags: [tag],
folder: 'tmp',
background: colors[i]
}
});
};
var uploadTasks = [];
imagesToUpload.map(function (element, index, items) {
uploadTasks.push(function (callback) {
console.log("Uploading image #" + index)
cloudinary.v2.uploader.upload(element.src, element.params, function (err, result) {
if (err) {
return callback(err)
}
callback(null, result);
});
});
});
async.parallelLimit(uploadTasks, 5, function (err) {
console.log("Generating gif...")
cloudinary.v2.uploader.multi(tag, {
delay: delay
}, function (error, gif) {
if (error) {
return callback(error)
} else {
console.log("Deleting tmp images...")
cloudinary.v2.api.delete_resources_by_tag(tag, {}, function (error, result) {
if (error) {
return callback(error)
} else {
console.log("Done! :)")
callback(null, gif.secure_url)
}
});
}
});
});
}