0.0.6 • Published 6 months ago

@elonehoo/colors-convert v0.0.6

Weekly downloads
-
License
MIT
Repository
-
Last release
6 months ago

colors-converts

Color-convert is a color conversion library for JavaScript and node. It converts all ways between rgb, hsl, hsv, hwb, cmyk, ansi, ansi16, hex strings, and CSS keywords (will round to closest):

import convert from '@elonehoo/colors-converts'

convert.rgb.hsl(140, 200, 100) // [96, 48, 59]
convert.keyword.rgb('blue') // [0, 0, 255]

const rgbChannels = convert.rgb.channels // 3
const cmykChannels = convert.cmyk.channels // 4
const ansiChannels = convert.ansi16.channels // 1

Install

$ npm install '@elonehoo/colors-converts

API

Simply get the property of the from and to conversion that you're looking for.

All functions have a rounded and unrounded variant. By default, return values are rounded. To get the unrounded (raw) results, simply tack on .raw to the function.

All 'from' functions have a hidden property called .channels that indicates the number of channels the function expects (not including alpha).

import convert from '@elonehoo/colors-converts'

// Hex to LAB
convert.hex.lab('DEADBF') // [ 76, 21, -2 ]
convert.hex.lab.raw('DEADBF') // [ 75.56213190997677, 20.653827952644754, -2.290532499330533 ]

// RGB to CMYK
convert.rgb.cmyk(167, 255, 4) // [ 35, 0, 98, 0 ]
convert.rgb.cmyk.raw(167, 255, 4) // [ 34.509803921568626, 0, 98.43137254901961, 0 ]

Arrays

All functions that accept multiple arguments also support passing an array.

Note that this does not apply to functions that convert from a color that only requires one value (e.g. keyword, ansi256, hex, etc.)

import convert from '@elonehoo/colors-converts'

convert.rgb.hex(123, 45, 67) // '7B2D43'
convert.rgb.hex([123, 45, 67]) // '7B2D43'

Routing

Conversions that don't have an explicitly defined conversion (in conversions.js), but can be converted by means of sub-conversions (e.g. XYZ -> RGB -> CMYK), are automatically routed together. This allows just about any color model supported by color-convert to be converted to any other model, so long as a sub-conversion path exists. This is also true for conversions requiring more than one step in between (e.g. LCH -> LAB -> XYZ -> RGB -> Hex).

Keep in mind that extensive conversions may result in a loss of precision, and exist only to be complete. For a list of "direct" (single-step) conversions, see conversions.js.

Color Space Scales

Conversions rely on an agreed upon 'full-scale' value for each of the channels. Listed here are those values for the most common color spaces

rgb

channelfull-scale value
r255
g255
b255

hsl

channelfull-scale value
h360
s100
l100

hsv

channelfull-scale value
h360
s100
v100

hwb

channelfull-scale value
h360
w100
b100

cmyk

channelfull-scale value
c100
m100
y100
k100

hex

channelfull-scale value
hex0xffffff

keyword

channelvalue
nameany key from color-name

apple

channelfull-scale value
065535
165535
265535

gray

channelfull-scale value
g100

Contribute

If there is a new model you would like to support, or want to add a direct conversion between two existing models, please send us a pull request.

License

MIT License © 2022-PRESENT Elone Hoo

0.0.5

10 months ago

0.0.4

10 months ago

0.0.6

6 months ago

0.0.3

12 months ago

0.0.2

12 months ago

0.0.1

2 years ago

0.0.1-beta.0

2 years ago