51 lines
No EOL
2.1 KiB
JavaScript
51 lines
No EOL
2.1 KiB
JavaScript
import data from './data.json' with { type: "json" };
|
|
import gm from "gm";
|
|
import * as fs from "fs";
|
|
|
|
|
|
const myGm = gm.subClass({imageMagick: true});
|
|
|
|
const position = {x: 4, y: 2, gravity: "NorthEast"}
|
|
const metadatas = []
|
|
|
|
data.forEach(prideflag => {
|
|
console.log(`== Creating flags for ${prideflag.name.en}`);
|
|
const imageMetadata = {title:`Drapeau ${prideflag.name.fr.toLowerCase()} :`, list:[]};
|
|
prideflag.texts.forEach(text => {
|
|
const outputfile = `${prideflag.name.en.toLowerCase()}-${text.replace("⋅", "_").replace(" ", "_").replace("\n", '-').toLowerCase()}.png`
|
|
console.log(`Creating button for text ${text} (${outputfile})`);
|
|
const data = {file: outputfile, alt:`Drapeau ${prideflag.name.fr.toLowerCase()} avec écrit "${text.replace("\n", " ").toLowerCase()}"`};
|
|
imageMetadata.list.push(data);
|
|
const turnedText = text
|
|
.replace("⋅", "-")
|
|
.toUpperCase();
|
|
myGm(prideflag.source)
|
|
.font('./NFPixels-Regular.ttf', 10)
|
|
.drawText(position.x-1, position.y, turnedText, position.gravity)
|
|
.drawText(position.x+1, position.y, turnedText, position.gravity)
|
|
.drawText(position.x, position.y+1, turnedText, position.gravity)
|
|
.drawText(position.x, position.y-1, turnedText, position.gravity)
|
|
.drawText(position.x-1, position.y-1, turnedText, position.gravity)
|
|
.drawText(position.x+1, position.y+1, turnedText, position.gravity)
|
|
.drawText(position.x-1, position.y+1, turnedText, position.gravity)
|
|
.drawText(position.x+1, position.y-1, turnedText, position.gravity)
|
|
.fill("#FFFFFF")
|
|
.drawText(position.x, position.y, turnedText, position.gravity)
|
|
.write(`./output/${outputfile}`, function (err) {
|
|
if (err) {
|
|
console.error(err);
|
|
throw err;
|
|
};
|
|
});
|
|
})
|
|
metadatas.push(imageMetadata);
|
|
});
|
|
|
|
console.log(metadatas);
|
|
|
|
fs.writeFile("./output/pridebuttons.json", JSON.stringify(metadatas), (err) => {
|
|
if (err) {
|
|
console.error(err);
|
|
throw err;
|
|
}
|
|
}); |