77 lines
1.9 KiB
Markdown
77 lines
1.9 KiB
Markdown
# layered-generative-art
|
|
An easy-to-use library to generate random images from a set of layers.
|
|
|
|
## Installation
|
|
NPM:
|
|
```console
|
|
$ npm install layered-generative-art
|
|
```
|
|
Bun:
|
|
```console
|
|
$ bun add layered-generative-art
|
|
```
|
|
|
|
## Example
|
|
```ts
|
|
// 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);
|
|
```
|
|
|
|
## Features
|
|
- optional layers based on a probability
|
|
- weighted layer options to create rare trait options
|
|
|
|
## Contributing
|
|
Feel free to open pull requests
|
|
|
|
## License
|
|
MIT
|