@colour-extractor/colour-extractor
v1.0.1
Published
Extract colour palettes from images
Downloads
187
Readme
ℹ️ For GraphicsMagick version please see tag v0.2.1.
colour-extractor
Extracts colour palettes from photos using k-means clustering in LAB color space.
Installation
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.
Usage
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'
]
Supported image formats
All major image formats are supported, including PNG, JPG and WebP. Please see image's readme for a full list.
How does it work?
Here's the simplified algorithm:
- Image is scaled down to 48x48px with a fast nearest-neighbour algoritm.
- Colors are gruped into up to 16 clusters using k-means clustering.
- Identified clusters are refined using CIEDE2000 distance.
License
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