1

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.

0 Answers0