gm-palette
TypeScript icon, indicating that this package has built-in type declarations

1.1.0 • Public • Published

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

Package Sidebar

Install

npm i gm-palette

Weekly Downloads

7

Version

1.1.0

License

MIT

Unpacked Size

53.2 kB

Total Files

12

Last publish

Collaborators

  • akashdathan