Как напечатать различный текст на нескольких изображениях, используя jimp в node js? - PullRequest
0 голосов
/ 17 февраля 2020

Я хочу создать подарочную карту для отправки большого количества электронных писем с другим текстом. Я использую приведенную ниже логику c, чтобы печатать, но перезаписывать предыдущее изображение.

            Jimp.read(fileName)
            .then(function (image) {
                loadedImage1 = image;
                return Jimp.loadFont(Jimp.FONT_SANS_16_BLACK);
            })
            .then(font => {

                console.log('[][][', emailData);
                var paths = [];
                for(let i=0; i< Object.keys(emailData['recipient']).length; i++){
                    var receipentName = "Hello "+emailData['recipient'][i].name+', ';
                    loadedImages[i]= Object.assign(loadedImage1);
                    loadedImages[i].print(font, 220, 400, header, 500);
                    loadedImages[i].print(font, 220, 440, venue, 500);

                    loadedImages[i].print(font, 220, 460, location, 500);
                    loadedImages[i].print(font, 220, 520, receipentName, 500);
                    loadedImages[i].print(font, 220, 580, message, 500);
                    //loadedImage.print(font, 10, 30, imageCaption);
                    var path= basePath + '/invitation/' + bookingId + '/' + bookingId+i + '.jpg';
                    //let fullPath = config.BASE_URL + '/uploads/invitation/' + bookingId + '/' + bookingId+i + '.jpg';
                    paths[i] = path;
                    loadedImages[i].write(path);
                }
                res.status(200).json({
                    data: {
                        paths: paths,
                        path: path, //config.BASE_URL + '/uploads/invitation/' + bookingId + '/' + bookingId + '.jpg',
                        bookingData: detail,
                        restaurantDetails: restaurantDetails
                    },
                    status: 1,
                    msg: "Notes data"
                });

            })
            .catch(function (err) {
                console.error(err);
            });

Ответы [ 2 ]

1 голос
/ 17 февраля 2020

Вместо

loadedImages[i]= Object.assign(loadedImage1);

Использовать

loadedImages[i]= loadedImage1.clone();
0 голосов
/ 17 февраля 2020

Правильный синтаксис для Object.assign:

Object.assign(target, ...sources)

В вашем случае правильное использование будет:

loadedImages[i]= Object.assign({}, loadedImage1);
...