0.5.3 • Published 3 months ago

colorimetry-ts v0.5.3

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

3 months ago

0.5.2

3 months ago

0.5.0

3 months ago

0.4.35

10 months ago

0.4.34

10 months ago

0.4.33

11 months ago

0.4.31

11 months ago

0.4.32

11 months ago

0.4.30

11 months ago

0.4.28

11 months ago

0.4.29

11 months ago

0.4.26

11 months ago

0.4.27

11 months ago

0.4.24

11 months ago

0.4.25

11 months ago

0.4.22

11 months ago

0.4.23

11 months ago

0.4.20

2 years ago

0.4.21

2 years ago

0.4.19

2 years ago

0.1.10

2 years ago

0.1.11

2 years ago

0.4.9

2 years ago

0.1.12

2 years ago

0.4.8

2 years ago

0.1.13

2 years ago

0.1.14

2 years ago

0.1.15

2 years ago

0.1.0

2 years ago

0.3.0

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.8

2 years ago

0.1.7

2 years ago

0.1.9

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.6

2 years ago

0.1.5

2 years ago

0.4.10

2 years ago

0.1.20

2 years ago

0.1.21

2 years ago

0.1.22

2 years ago

0.1.23

2 years ago

0.4.17

2 years ago

0.4.18

2 years ago

0.4.15

2 years ago

0.4.16

2 years ago

0.4.13

2 years ago

0.4.14

2 years ago

0.4.11

2 years ago

0.4.12

2 years ago

0.2.1

2 years ago

0.4.5

2 years ago

0.1.16

2 years ago

0.4.4

2 years ago

0.1.17

2 years ago

0.4.7

2 years ago

0.1.18

2 years ago

0.4.6

2 years ago

0.1.19

2 years ago

0.4.1

2 years ago

0.2.3

2 years ago

0.4.0

2 years ago

0.2.2

2 years ago

0.4.3

2 years ago

0.4.2

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago