viennguyenbkdn
v1.1.0
Published
Dominant color and palette using graphicsmagick.
Downloads
17
Maintainers
Readme
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
- Akash Dathan (@akash_dathan)