0.5.3 • Published 1 year ago

colorimetry-ts v0.5.3

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year 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

1 year ago

0.5.2

1 year ago

0.5.0

1 year ago

0.4.35

2 years ago

0.4.34

2 years ago

0.4.33

2 years ago

0.4.31

2 years ago

0.4.32

2 years ago

0.4.30

2 years ago

0.4.28

2 years ago

0.4.29

2 years ago

0.4.26

2 years ago

0.4.27

2 years ago

0.4.24

2 years ago

0.4.25

2 years ago

0.4.22

2 years ago

0.4.23

2 years ago

0.4.20

3 years ago

0.4.21

3 years ago

0.4.19

3 years ago

0.1.10

3 years ago

0.1.11

3 years ago

0.4.9

3 years ago

0.1.12

3 years ago

0.4.8

3 years ago

0.1.13

3 years ago

0.1.14

3 years ago

0.1.15

3 years ago

0.1.0

3 years ago

0.3.0

3 years ago

0.1.2

3 years ago

0.1.1

3 years ago

0.1.8

3 years ago

0.1.7

3 years ago

0.1.9

3 years ago

0.1.4

3 years ago

0.1.3

3 years ago

0.1.6

3 years ago

0.1.5

3 years ago

0.4.10

3 years ago

0.1.20

3 years ago

0.1.21

3 years ago

0.1.22

3 years ago

0.1.23

3 years ago

0.4.17

3 years ago

0.4.18

3 years ago

0.4.15

3 years ago

0.4.16

3 years ago

0.4.13

3 years ago

0.4.14

3 years ago

0.4.11

3 years ago

0.4.12

3 years ago

0.2.1

3 years ago

0.4.5

3 years ago

0.1.16

3 years ago

0.4.4

3 years ago

0.1.17

3 years ago

0.4.7

3 years ago

0.1.18

3 years ago

0.4.6

3 years ago

0.1.19

3 years ago

0.4.1

3 years ago

0.2.3

3 years ago

0.4.0

3 years ago

0.2.2

3 years ago

0.4.3

3 years ago

0.4.2

3 years ago

0.0.4

3 years ago

0.0.3

3 years ago

0.0.2

3 years ago

0.0.1

3 years ago