🎨 Pigmnts

Pigmnts is a color palette generator 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 8-digit Hex color codes as keys and dominance(as percentage) of each color as value found in the image. Eg. {"#6DDAD0FF": 0.3, "#FF3A940A": 0.7}

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

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

Returns a vector of tuples with 8-digit Hex color codes as strings and dominance(as percentage) of each color found in the image. Eg. [("#6DDAD0FF", 0.3), ("#FF3A940A", 0.7)]

This function takes a reference to a Vector of RGBA which contains the color data, and num_colors to limit the number of colors found. This function can be used when color data is gathered from an image decoded using image-rs.
NOTE: The RGBA struct is different from implementations in other crates such as image-rs.

License

Pigmnts is MIT Licensed