0.5.3 • Published 2 years ago

colorimetry-ts v0.5.3

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

colorimetry-ts

A type-safe color science library, written for Javascript.

Installation

npm install colorimetry-ts

Then import as an ES module:

import { color } from "colorimetry-ts";

Features

  • Value conversions between most widely-used color spaces
    • Supports custom RGB (and non-RGB) color spaces
  • Object definitions for common color gamut primaries and illuminants
  • Function definitions for common tone response transfer functions
  • Color differences
    • Includes CIE2000, ITP , CIE1976 (TODO), u′v′
    • Supports luminance component compensation
  • Color gamut mapping
  • Correlated color temperature
  • Chromatic adaptation transforms
  • ...and more

Examples

  • Convert sRGB red primary to display-p3 RGB encoding (using 8 bits):
const srgbRed = color("srgb", [255, 0, 0], { bitDepth: 8 });
const srgbRedInP3 = srgbRed.toSpace("display-p3", { bitDepth: 8 });

console.log(srgbRedInP3.values);
// output: [ 234, 51, 35 ]

The input/output of RGB values are normalized between 0–1 if no bitDepth value is passed to the color's context object argument.

  • Create an XYZ color space converter to convert multiple colors:
const toXyz = color("xyz");

const color1 = color("srgb", [1, 1, 1]);
const color2 = color("display-p3", [1, 1, 1]);
const color3 = color("lab", [100, 0, 0]);

console.log(toXyz(color1).values, toXyz(color2).values, toXyz(color3).values);
// output: [ 76.036, 80.000, 87.125 ],
//         [ 76.036, 80.000, 87.125 ],
//         [ 95.046, 100.00, 108.91 ]
  • Check if two colors are equal/indistinguishable from each other:
// srgb and p3 share the same blue primary
// ...but their luminance is not equal!
const colorA = color("srgb", [0, 0, 1]);
const colorB = color("display-p3", [0, 0, 1]);

console.log(colorA.equals(colorB));
// output: false

// conversions should always be equal
console.log(srgbRed.equals(srgbRedInP3));
// output: true

Note: Color value conversions using color() require absolute color spaces for both source and destination spaces, as Color object values are supposed to be non-ambiguous. For agnostic conversions, import the relevant function, e.g. ycbcrFromRgb().

Roadmap

  • Possibly support BigInt to avoid floating-point errors, for use in reference conversion values
0.5.3

2 years ago

0.5.2

2 years ago

0.5.0

2 years ago

0.4.35

3 years ago

0.4.34

3 years ago

0.4.33

3 years ago

0.4.31

3 years ago

0.4.32

3 years ago

0.4.30

3 years ago

0.4.28

3 years ago

0.4.29

3 years ago

0.4.26

3 years ago

0.4.27

3 years ago

0.4.24

3 years ago

0.4.25

3 years ago

0.4.22

3 years ago

0.4.23

3 years ago

0.4.20

3 years ago

0.4.21

3 years ago

0.4.19

3 years ago

0.1.10

4 years ago

0.1.11

4 years ago

0.4.9

4 years ago

0.1.12

4 years ago

0.4.8

4 years ago

0.1.13

4 years ago

0.1.14

4 years ago

0.1.15

4 years ago

0.1.0

4 years ago

0.3.0

4 years ago

0.1.2

4 years ago

0.1.1

4 years ago

0.1.8

4 years ago

0.1.7

4 years ago

0.1.9

4 years ago

0.1.4

4 years ago

0.1.3

4 years ago

0.1.6

4 years ago

0.1.5

4 years ago

0.4.10

4 years ago

0.1.20

4 years ago

0.1.21

4 years ago

0.1.22

4 years ago

0.1.23

4 years ago

0.4.17

4 years ago

0.4.18

4 years ago

0.4.15

4 years ago

0.4.16

4 years ago

0.4.13

4 years ago

0.4.14

4 years ago

0.4.11

4 years ago

0.4.12

4 years ago

0.2.1

4 years ago

0.4.5

4 years ago

0.1.16

4 years ago

0.4.4

4 years ago

0.1.17

4 years ago

0.4.7

4 years ago

0.1.18

4 years ago

0.4.6

4 years ago

0.1.19

4 years ago

0.4.1

4 years ago

0.2.3

4 years ago

0.4.0

4 years ago

0.2.2

4 years ago

0.4.3

4 years ago

0.4.2

4 years ago

0.0.4

4 years ago

0.0.3

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago