Skip to content

Grab the color palette from an image using just Javascript. Fork to include white, black, and transparency checks. Works in the browser and in Node.

License

Notifications You must be signed in to change notification settings

DeveloperBlue/color-thief

 
 

Repository files navigation

Color Thief

Grab the color palette from an image using just Javascript.Works in the browser and in Node.

Fork Contents

This is a fork of @lokesh/color-theif.

This fork adds the following features:

  • Option to include white in the possible color palette
  • Option to check if an image contains transparency (with fine-tunable thresholds)

NOTE: The demo and tests are not altered to reflect these changes.

Usage with includeWhite and hasTransparency

// Modified Function Parameters

// To include white when creating the color palette, simply set pass true to the includeWhite parameter.
getColor(img, quality, includeWhite = false)

// To check if an image has transparency, pass true to the hasTransparency parameter.
getPalette(img, colorCount = 10, quality = 10, includeWhite = false, checkTransparency = false, checkTransparencyConfig = {pixelConsideredTransparentThreshold : 125, imageConsideredTransparentThreshold : 0.1}) {

⚠️ Note that getPalette() will then return an OBJECT when checkTransparency is true⚠️.

// original
const palette = getPalette(img, colorCount, quality, includeWhite, checkTransparency = false)
// with checkTransparency
const {palette, hasTransparency} = getPalette(img, colorCount, quality, includeWhite, checkTransparency = true)

To fine-tune how getPalette() determines if an image has transparency, you can also pass an additional checkTransparencyConfig object, where:

pixelConsideredTransparentThreshold should be between 0 and 255. Default is 125, meaning if a pixel's alpha (0-255) is less than this 10, the pixel is counted towards the overall transparency check.

pixelConsideredTransparentThreshold should be between 0 and 1. Default is 0. If set to 0, any transparent pixel detected will mean the image is considered to be transparent. Any number greater than 0 serves as a treshold. For example, when set to 0.1 (a target of 10%); if 10% of all the pixels trigger the pixelConsideredTransparentThreshold check, the image is considered transparent.


View the demo page for examples, API docs, and more.


Contributing

Project structure

  • build/ - Simple script that copies and renames files into the /dist folder.
  • cypress/ - Browsers tests.
  • dist/ - Generated distribution files created by microbundle package and a couple of files copied via build script.
  • examples/ - CSS, JS, and Images for the index.html example page.
  • src/color-thief-node.js - Source for the Node (commonjs) compatible version of the script.
  • src/color-thief.js - Source for the browser (ES6, AMD, Global var) compatible version of the script.
  • src/core.js - Functions shared between the node and browser versions of the script.
  • test/ - Node integration tests. Uses Chai.
  • index.html - Example page.

Running tests

There are two sets of tests:

  1. Browser tests run with Cypress
  2. Node tests run with Karma and utilizing Mocha

To run both the browser and Node tests:

  • npm run dev to start local server.
  • npm run test

To run just the browser tests with the Cypress UI:

  • npm run dev to start local server
  • npm run test:browser

To run just the Node tests:

  • npm run test:node

Adding tests

  • Update cypress/test-pages/index.html as needed or create a new test page if you need new examples.
  • Add new tests in cypress/integration/apis_spec.js

Making a new release

  • Merge dev into master
  • Pull down master
  • Update version number in src/color-thief.js and package.json
  • Run npm run build
  • Commit and push built files back up to master
  • Create a new Github release along with tag. Naming convention for both v2.8.1
  • npm publish

About

Grab the color palette from an image using just Javascript. Fork to include white, black, and transparency checks. Works in the browser and in Node.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • JavaScript 74.1%
  • HTML 20.7%
  • CSS 5.2%