Can now load params from the JSON

This commit is contained in:
Mike Lynch 2025-04-01 01:48:28 +00:00
parent 84034ef41c
commit ead2b1a7ee

View File

@ -2,6 +2,7 @@ import { Resvg } from "@resvg/resvg-js";
import { promises } from "fs";
import { JSDOM } from "jsdom";
import * as d3 from "d3";
import * as d3c from "d3-color";
import yargs from "yargs/yargs";
import { hideBin } from "yargs/helpers";
import spawn from "await-spawn";
@ -42,6 +43,28 @@ function randomise_params() {
}
}
async function load_or_random_params(paramf) {
if( paramf ) {
const pjson = await promises.readFile(paramf);
const params = JSON.parse(pjson);
params.background = d3c.color(params.background);
params.patterns.forEach((p) => {
p.colour = d3c.color(p.colour);
});
return params;
}
return randomise_params();
}
async function save_params(paramf, params) {
params.background = params.background.formatHex();
params.patterns.forEach((p) => {
p.colour = p.colour.formatHex();
});
await promises.writeFile(paramf, JSON.stringify(params));
}
// lol the best way I found to to this was imagemagick!
@ -185,7 +208,7 @@ async function post_image(image, alt_text, cf) {
async function main() {
const argv = yargs(hideBin(process.argv))
.usage("Usage: -s SIZE -o output.png -c config.json")
.usage("Usage: -s SIZE [-o output] -c config.json [-p params.json]")
.default('s', 1200)
.default('c', 'config.json').argv;
@ -200,7 +223,7 @@ async function main() {
const imgfile = cf['working_dir'] + '/' + fn;
const paramsfile = cf['working_dir'] + '/' + jsfn;
const params = randomise_params();
const params = await load_or_random_params(argv.p);
const colourf = params.palette === 'grayscale' ? cf['grayscale'] : cf['colour'];
const namer = new ColourNamer();
@ -228,7 +251,7 @@ async function main() {
const hist = await get_histogram(imgfile);
const alt_text = image_description(namer, params, hist);
await promises.writeFile(paramsfile, JSON.stringify(params));
await save_params(paramsfile, params);
console.log(alt_text);
console.log(imgfile);
if( cf['base_url'] ) {