JSPM

layered-generative-art

1.0.4
  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 1
  • Score
    100M100P100Q22652F
  • License MIT

An easy-to-use library to generate random images from a set of layers

Package Exports

  • layered-generative-art
  • layered-generative-art/dist/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (layered-generative-art) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

layered-generative-art

An easy-to-use library to generate random images from a set of layers.

Installation

NPM:

$ npm install layered-generative-art

Bun:

$ bun add layered-generative-art

Example

// 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