An easy-to-use library to generate random images from a set of layers.
NPM:
$ npm install layered-generative-art
Bun:
$ bun add layered-generative-art
// import generate function
import { generateRandomImage } from 'layered-generative-art';
import { writeFileSync } from 'node:fs';
// ...
// generate a random character from a fixed base shape, randomly choose between brown or
// blue eyes (blue eyes are 5 times as rare) and an optional hat at a 25% probability
const result: GenerativeArtOutput = generateRandomImage('./assets/base_shape.png', [
{
traitName: 'Eyes',
path: './assets/eyes/',
options: [
{
name: 'Blue',
// this path will be combined with the layer's path (in this case => './assets/eyes/blue_eyes.png')
path: 'blue_eyes.png',
weight: 1
},
{
name: 'Brown',
path: 'brown.png',
// Brown eyes now have 5 times the probability of blue eyes
weight: 5
}
]
},
{
traitName: 'Hat',
path: './assets/hats/',
// Set the probability of a hat occouring to 25%
probability: 0.25,
options: [
{
name: 'Red Beanie',
path: 'red_beanie.png',
},
{
name: 'Green Cap',
path: 'green_cap.png',
}
]
},
]);
// write the newly generated character to a file
writeFileSync('./output/my_character.png', result.buffer);
// log the choices that were taken by the generator
console.log(result.choices);
- optional layers based on a probability
- weighted layer options to create rare trait options
Feel free to open pull requests
MIT