Extract color palettes from images

Usage no npm install needed!

<script type="module">
  import sensuColorExtractor from 'https://cdn.skypack.dev/@sensu/color-extractor';


color-extractor build status

An updated fork of node-colour-extractor with proper error handling and tests

Extract color palettes from photos using Node.js.


Is as simple as with any other Node.js module:

$ npm install color-extractor

NOTE: color-extractor depends on gm module, which in turn depends on GraphicsMagick.




color-extractor exports two functions:

ce = require('color-extractor')
ce.topColors('Photos/Cats/01.jpg', function (error, colors) {

topColors function takes two arguments:

  • path to your photo,
  • a callback function.

Callback function will be passed an Array with RGB triplet of each color and its frequency:

  [1,   [46, 70, 118]],
  [0.3, [0,   0,   2]],
  [0.2, [12,  44,  11]]

The second function, colorKey, returns an array with nine colors, where each one can be mapped to a 3x3 box, ie. super-pixelised representation of the photo.

ce.colorKey('Photos/Cats/999999.jpg', function (error, colors) {
  database.store('color-keys', photoId, colors);
  // render colors to user while they wait for the photo to load.
  // (or something equally brilliant)


color-extractor exports two more utility functions:

> ce.rgb2hex(100, 10, 12);
> ce.rgb2hex([44, 44, 44]);
> ce.hex2rgb('#ffffff');
[255, 255, 255]
> ce.hex2rgb('45c092')
[69, 192, 146]


color-extractor is published under MIT license, please see the LICENSE file for full details.

Photos used in the sample can be downloaded from Flickr: