Skip to content

akashdathan/gm-palette

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

21 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

gm-palette

Graphicsmagic Palette

Dominant color and palette using graphicsmagick

Akash Dathan Twitter follow

Getting started

First download and install GraphicsMagick. In Mac OS X, you can simply use Homebrew and do:

$ brew install graphicsmagick

then use npm to install the module:

$ npm install gm-palette

Features

  • Retrieve dominant color and palette.
  • GIF format supported.
  • Provide the count of palette colors to obtain.
  • The input can be path to image, buffer or a readable stream

Basic Usage

const gmPalette = require('gm-palette')

//If callback is not provided, Promise is returned.
gmPalette.dominantColor('path/to/image.jpg', (error, data) => {
  if(error) console.log('Error', error)
  console.log('Result : ', data)

  //{ r: 54, g: 56, b: 62 }
})

//If callback is not provided, Promise is returned.
gmPalette.dominantColor('/path/to/animated.gif[0]', (error, data) => {
  if(error) console.log('Error', error)
  console.log('Result : ', data)

  //{ r: 54, g: 56, b: 62 }
})


const count = 10 // Required number of palette colors.
//If callback is not provided, Promise is returned.
gmPalette.palette('path/to/image.jpg', count,  (error, data) => { 
  // If count is not provided, a default value of 10 is taken.
  if(error) console.log('Error', error)
  console.log('Result : ', data)
  /*
  [ 
    { r: 28, g: 31, b: 38 },
    { r: 59, g: 61, b: 66 },
    { r: 62, g: 64, b: 69 },
    { r: 64, g: 63, b: 70 },
    { r: 65, g: 65, b: 63 },
    { r: 72, g: 72, b: 78 },
    { r: 122, g: 124, b: 130 },
    { r: 125, g: 128, b: 132 },
    { r: 155, g: 156, b: 159 },
    { r: 214, g: 215, b: 217 }
  ]
  */
})

gmPalette.palette('/path/to/animated.gif[0]', count,  (error, data) => { 
  // If count is not provided, a default value of 10 is taken.
  if(error) console.log('Error', error)
  console.log('Result : ', data)
  /*
  [ 
    { r: 28, g: 31, b: 38 },
    { r: 59, g: 61, b: 66 },
    { r: 62, g: 64, b: 69 },
    { r: 64, g: 63, b: 70 },
    { r: 65, g: 65, b: 63 },
    { r: 72, g: 72, b: 78 },
    { r: 122, g: 124, b: 130 },
    { r: 125, g: 128, b: 132 },
    { r: 155, g: 156, b: 159 },
    { r: 214, g: 215, b: 217 }
  ]
  */
})

Buffer

const gmPalette   = require('gm-palette'),
      imageBuffer = require('fs').readFileSync('/path/to/image.jpg'),
      count       = 10


//If callback is not provided, Promise is returned.
gmPalette.dominantColor(imageBuffer, (error, data) => {
  if(error) console.log('Error', error)
  console.log('Result : ', data)

  //{ r: 54, g: 56, b: 62 }
})

//If callback is not provided, Promise is returned.
gmPalette.palette(imageBuffer, count,  (error, data) => { 
  // If count is not provided, a default value of 10 is taken.
  if(error) console.log('Error', error)
  console.log('Result : ', data)
  /*
  [ 
    { r: 28, g: 31, b: 38 },
    { r: 59, g: 61, b: 66 },
    { r: 62, g: 64, b: 69 },
    { r: 64, g: 63, b: 70 },
    { r: 65, g: 65, b: 63 },
    { r: 72, g: 72, b: 78 },
    { r: 122, g: 124, b: 130 },
    { r: 125, g: 128, b: 132 },
    { r: 155, g: 156, b: 159 },
    { r: 214, g: 215, b: 217 }
  ]
  */
})

Stream

const gmPalette      = require('gm-palette'),
      readableStream = fs.createReadStream('/path/to/my/img.jpg'),
      count          = 10

//If callback is not provided, Promise is returned.
gmPalette.dominantColor(readableStream, (error, data) => {
  if(error) console.log('Error', error)
  console.log('Result : ', data)

  //{ r: 54, g: 56, b: 62 }
})

//If callback is not provided, Promise is returned.
gmPalette.palette(readableStream, count,  (error, data) => { 
  // If count is not provided, a default value of 10 is taken.
  if(error) console.log('Error', error)
  console.log('Result : ', data)
  /*
  [ 
    { r: 28, g: 31, b: 38 },
    { r: 59, g: 61, b: 66 },
    { r: 62, g: 64, b: 69 },
    { r: 64, g: 63, b: 70 },
    { r: 65, g: 65, b: 63 },
    { r: 72, g: 72, b: 78 },
    { r: 122, g: 124, b: 130 },
    { r: 125, g: 128, b: 132 },
    { r: 155, g: 156, b: 159 },
    { r: 214, g: 215, b: 217 }
  ]
  */
})

Author