I'm using Jimp with nodejs to create a dynamic image of a date, This is my function:
const buildDate = function(date) {
return new Promise(function(resolve, reject) {
Jimp.create(55, 500).then(dateCanvas => {
for (let i = 0; i < date.length; i++) {
let c = date.charAt(i);
let rand = Math.floor(Math.random() * 3);
console.log(`${c}${rand}.png`);
Jimp.read(path.join(numbers, (isNumber(c)?`${c}${rand}.png`:`s${rand}.png`)), (err, numberImage) => {
if (err) return reject(err);
dateCanvas.composite(numberImage, i*25, 0, [], () => {
if (i >= (date.length-1)) return resolve(dateCanvas);
});
});
}
});
});
};
I'm using my function like this:
buildDate('25/12/2009')
.then(dateCanvas => {
image.blit(dateCanvas, 139, 1224)
}).catch(err => reject(err));
I have in my "numbers folders", 3 png for each number from 0 to 9 of 30*55.
My problem is: only 2 numbers showing on the result. I think its because i don't wait for the other images to be read but I don't know how to do? Thanks a lot in advance an sorry for my bad english.