You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
1.4 KiB
JavaScript

// Copyright (C) 2020-2022 Intel Corporation
//
// SPDX-License-Identifier: MIT
// eslint-disable-next-line no-use-before-define
exports.imageGenerator = imageGenerator;
const path = require('path');
const jimp = require('jimp');
function createImage(width, height, color) {
return new Promise((resolve, reject) => {
// eslint-disable-next-line new-cap, no-new
new jimp(width, height, color, ((err, img) => {
if (err) reject(err);
resolve(img);
}));
});
}
function appendText(image, posX, posY, message, index) {
return new Promise((resolve, reject) => {
jimp.loadFont(jimp.FONT_SANS_64_BLACK, (err, font) => {
if (err) reject(err);
image.print(font, Number(posX), Number(posY), `${message}. Num ${index}`);
resolve(image);
});
});
}
async function imageGenerator(args) {
const {
directory, fileName, width, height, color, posX, posY, message, count, extension,
} = args;
const file = path.join(directory, fileName);
try {
for (let i = 1; i <= count; i++) {
let image = await createImage(width, height, color);
image = await appendText(image, posX, posY, message, i);
image.write(`${file}_${i}.${extension}`);
}
// eslint-disable-next-line no-empty
} catch (e) {}
return null;
}