Extract colour palettes from images
npm install @colour-extractor/colour-extractor> ℹ️ For GraphicsMagick version please see tag v0.2.1.
---

Extracts colour palettes from photos using k-means clustering in LAB color space.
Is as simple as with any other Node.js module:
$ npm install @colour-extractor/colour-extractor
Note: The module contains precompiled Rust libraries. Please open an issue if your platform isn't supported.
colour-extractor exports two functions:
const { topColours, topHexColours } = require('colour-extractor');
const colors = await topColours('Photos/Cats/01.jpg');
// => [ [158, 64, 75], ... ]
console.log(colors);
topColours function needs a path to your photo (see below for supported formats), which resolves with an Array with RGB triplet for each prominent colors:
[
[46, 70, 118],
[0, 0, 2],
[12, 44, 11]
]
topHexColours works the same, but instead of an RGB triplet it returns hex codes (with # included).
[
'#2e4676',
'#000002',
'#0c2c0b'
]
All major image formats are supported, including PNG, JPG and WebP. Please see image's readme for a full list.
Here's the simplified algorithm:
1. Image is scaled down to 48x48px with a fast nearest-neighbour algoritm.
2. Colors are gruped into up to 16 clusters using k-means clustering.
3. Identified clusters are refined using CIEDE2000 distance.
colour-extractor is published under MIT license.
Photos used in the sample can be found on Unsplash:
* https://unsplash.com/photos/7QaYj09Wbhs
* https://unsplash.com/photos/pPRT4CLykp8
* https://unsplash.com/photos/ttF84ygvliI