Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/markusn/color-diff
Implemets the CIEDE2000 color difference algorithm, conversion between RGB and lab color and mapping all colors in palette X to the closest color in palette Y based on the CIEDE2000 difference.
https://github.com/markusn/color-diff
ciede2000 colordiff conversion javascript lab-color palette rgb
Last synced: 2 days ago
JSON representation
Implemets the CIEDE2000 color difference algorithm, conversion between RGB and lab color and mapping all colors in palette X to the closest color in palette Y based on the CIEDE2000 difference.
- Host: GitHub
- URL: https://github.com/markusn/color-diff
- Owner: markusn
- License: other
- Created: 2012-03-23T23:29:27.000Z (almost 13 years ago)
- Default Branch: master
- Last Pushed: 2024-09-26T15:18:03.000Z (4 months ago)
- Last Synced: 2025-01-02T07:06:16.116Z (10 days ago)
- Topics: ciede2000, colordiff, conversion, javascript, lab-color, palette, rgb
- Language: JavaScript
- Homepage:
- Size: 194 KB
- Stars: 359
- Watchers: 10
- Forks: 30
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: COPYING
Awesome Lists containing this project
- awesome-nodejs-pure-js - color-diff
README
# color-diff
[![Build Status](https://github.com/markusn/color-diff/actions/workflows/build-latest.yaml/badge.svg?branch=master)](https://github.com/markusn/color-diff/actions/workflows/build-latest.yaml)
[![Coverage Status](https://coveralls.io/repos/markusn/color-diff/badge.png?branch=master)](https://coveralls.io/r/markusn/color-diff?branch=master)Implements the CIEDE2000 color difference algorithm, conversion between RGB and
LAB color and mapping all colors in palette X to the closest color in palette Y
based on the CIEDE2000 difference.## Installation
```bash
npm install color-diff --save
```## Tests
Are located in the `test/` folder and are run by:
```bash
npm test
```## Usage
```js
// CommonJS
const {
closest,
furthest,
diff,
mapPalette,
paletteMapKey,
rgbaToLab,
mapPaletteLab,
labPaletteMapKey,
} = require("color-diff");// ESM
import {
closest,
furthest,
diff,
mapPalette,
paletteMapKey,
rgbaToLab,
mapPaletteLab,
labPaletteMapKey,
} from "color-diff";
```### closest(color, palette, bc)
Returns the closest color. The parameter bc is optional and is used as
background color when the color and/or palette uses alpha channels.```js
const color = { R: 255, G: 1, B: 30 };
// red, green, blue
const palette = [ {R: 255, G: 0, B: 0 },
{R: 0, G: 255, B: 0 },
{R: 0, G: 0, B: 255} ];closest(color, palette); // {R: 255, G: 0, B: 0 }, red
```The result above is obvious, but `diff.closest` could deal with more complicated
cases.### furthest(color, palette, bc)
Returns the most different color. The parameter bc is optional and is used as
background color when the color and/or palette uses alpha channels.```js
const color = { R: 255, G: 255, B: 255 };
// black, white
const palette = [ {R: 0, G: 0, B: 0 }, {R: 255, G: 255, B: 255 } ];furthest(color, palette); // {R: 0, G: 0, B: 0 }, black
```The result above is obvious, but `diff.furthest` could deal with more
complicated cases.### mapPalette(palette1, palette2)
Returns a mapping from the colors in palette1 to palette2.
### paletteMapKey(color)
Return the palette map key for the color, to be used with the result from mapPalette.
### diff(color1, color2, bc)
Returns the difference between the lab colors color1 and color2. The parameter bc is optional and
is used as background color when one of the colors uses alpha channels.#### rgba color
`Object`
`RGBAColor` is an object containing 4 properties: 'R', 'G', 'B', 'A', where 'A' is optional OR
'r', 'g', 'b', 'a', where 'a' is optional . Such as:```js
{ R: 255, G: 1, B: 0 }
```There is an optional property 'A', which specifies the alpha channel between 0.0
and 1.0. If not present the color will be treated as fully opaque, i.e. A = 1.0.Each RGBA-color is transformed into a RGB-color before being used to calculate
the CIEDE2000 difference, using the specified background color
(defaults to white).### lab color
`Object`
`LabColor` is an object containing 3 properties 'L', 'a', 'b' such as:
```js
{ L: 100, a: 0.005, b: -0.010 }
```#### palette
`Array.`
Color palette array which contains many `RGBAColor` objects.
## Author
Markus Ekholm
## License
3-clause BSD. For details see `COPYING`.