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.
npm i chromaticity-color-utilities
📖 Please read the full Documentation for details on each method as well as numerous usage examples.
import Color from 'chromaticity-color-utilities'
const color1: Color.hsv = Color.from('rgb', [255, 128, 0]).to('hsv')
const scheme1: Color.lab[] = 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,
})
const yourMethod = (rgb: Color.rgb): Color.hsv => {
// do things
let hsv: Color.hsv = rgb.to('hsv')
// do things
return hsv
}
const Color = require('chromaticity-color-utilities')
const color1 = Color.from('rgb', [255, 128, 0]).to('hsv')
const 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,
})
colorTypes
is still supported, but deprecated and will be removed in a future release.
import Color, { colorTypes } from 'chromaticity-color-utilities'
const color1: colorTypes.hsv = Color.from('rgb', [255, 128, 0]).to('hsv')
- YCbCr validates only with a high tolerance. Not sure if floating point issue.
git clone https://github.com/reiniiriarios/chromaticity-color-utilities.git
cd chromaticity-color-utilities
npm ci
tsc
(Typescript not added as dependency, install with npm i -g typescript
.)
- LCHab - basic support added
- LCHuv
- HSLuv
- HPLuv
- 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)
- Need way more comments and better variable names
- Write more documentation wrt mathematics.
- Integrate my references better. :)
- For RGBA to CMYK, mix alpha with white
- Support for 8-digit hex values (RRGGBBAA)
- Diagrams in docs