chromaticity-color-utilities
![](https://img.shields.io/badge/license-GPLv3-green)
Color utilities for Node.js.
Conversion, modification, and color schemes of: RGB (at any bit depth), HSV, HSL, HSI, HSP, CYMK, YIQ, XYZ, xyY, L*a*b*, L*u*v*, Y'PbPr, Y'CbCr, and more.
const Color = require('chromaticity-color-utilities')
let color1 = Color.from('rgb',[255,128,0]).to('hsv')
let scheme1 = Color.from('hex',0x9A237F).modify('desaturate',{amount:0.2}).to('lab',{
colorSpace: 'AdobeRGB',
referenceWhite: 'D50'
}).scheme('gradient',{
with: Color.from('hsl',[300,50,45]),
colors: 5
})
Install
npm install --save chromaticity-color-utilities
Status
Approaching complete-ish stage... Most conversion tests pass. Issues with XYZ. Writing tests for schemes, mods.
Documentation
The full docs contain information on each method as well as the mathematics behind them.
Full Documentation > https://reiniiriarios.github.io/chromaticity-color-utilities
Example Usage
See documentation for more details and usage examples.
Any color can be converted to any other, with only a few caveats. Construction from()
, conversion to()
, and modification modify()
methods can be chained.
Object properties can be accessed directly, e.g. color.r
for the red channel value.
Most colors will retain their arguments as a part of their object properties, such as bitDepth, colorSpace, etc.
const Color = require('chromaticity-color-utilities')
let color1 = Color.from('rgb',[255,128,0]).to('hsv')
let color2 = Color.from('hex','ff3201').to('rec709rgb', { bitRate: 10 })
let color6 = Color.from('hex', '#ff00ff').to('lab')
let color6 = Color.from('hex', 0xFF00FF).to('lab',{
colorSpace: 'AdobeRGB',
referenceWhite: 'D50'
})
let red = Color.from('hsl',[280,80,90]).to('rgb').r
let color7 = Color.from('hsl',[300,100,50]).to('ypbpr',{kb:0.0722, kr:0.2126})
let color3 = Color.from('rgb',[255,0,0]).modify('blend', {with: Color.from('rgb',[0,255,0])})
let color4 = Color.from('rgb',[255,0,0]).modify('blend', {
with: Color.from('hex','00ff00'),
amount: 0.4
})
let color5 = Color.from('hex','ee5432').modify('blend', {
with: Color.from('rgb',[234, 100, 20, 64]),
amount: 1/3
}).to('hsv')
let scheme1 = Color.from('rgb',[200, 180, 0]).scheme('splitComplement')
let scheme2 = Color.from('hsl',[180, 80, 48]).scheme('tetradic', { angle: 40 })
Compiling from Source
git clone https://github.com/reiniiriarios/chromaticity-color-utilities.git
cd chromaticity-color-utilities
npm install
tsc
To Do List
- YUV
- Gamma adjustment modification
- Auto-gamma adjustment and conversion for rec709, rec2020, and jpeg to/from ypbpr
- note to self: rec709 does gamma conversion before while rec2020 does gamma conversion after when converting to ypbpr (I think)
- Write more documentation wrt mathematics.
- Integrate my references better. :)