🎨 Pigmnts

Pigmnts is a library to create a color palette from an image built using Rust, compiled to WebAssembly. This allows for super-fast color palette extraction from an image on the web. It uses the K-means++ clustering algorithm to select the most commonly occuring colors from the image.

Examples with Web Assembly

As a JavaScript module

```html

```

In Node.js

  1. Start by installing the npm package bash npm install pigmnts

  2. Configure your build process to copy the wasm file in the your build directory.

  3. Use it in code

```javascript import init, { pigments } from 'pigmnts';

async function run() { // Load the wasm file from path where wasm file was copied by the bundler await init('');

// Canvas element from which palette should be created const canvas = document.querySelector('canvas');

// Call the pigments wasm function const palette = pigments(canvas, 5); } run(); ```

Functions

Pigmnts exposes following function in WebAssembly

pigments(canvas: HtmlCanvasElement, numcolors: u8, batchsize: Option<u32>)

Returns an object with 6-digit Hex color codes as keys and dominance(as percentage) of each color as value found in the image. Eg. {"#6DDAD0": 0.3, "#FF3A94": 0.7}

If this crate is used in some Rust projects, then following function is also available

pigmentspixels(pixels: &Vec<LAB>, numcolors: u8) -> Vec<(LAB, f32)>

Returns a vector of tuples with colors as LAB and dominance(as percentage) of each color found in the image.

This function can be used when color data is gathered from an image decoded using image-rs.

License

Pigmnts is MIT Licensed