Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/danburzo/node-lcms
A little wrapper over LittleCMS utilities
https://github.com/danburzo/node-lcms
cmyk color icc littlecms
Last synced: 2 months ago
JSON representation
A little wrapper over LittleCMS utilities
- Host: GitHub
- URL: https://github.com/danburzo/node-lcms
- Owner: danburzo
- License: mit
- Created: 2019-06-17T19:54:01.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-11-01T20:04:22.000Z (about 5 years ago)
- Last Synced: 2024-10-21T05:38:09.933Z (2 months ago)
- Topics: cmyk, color, icc, littlecms
- Language: JavaScript
- Size: 55.7 KB
- Stars: 4
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# node-lcms
A little wrapper over [LittleCMS](https://github.com/mm2/Little-CMS) utilities.
## Installation
You need to have LittleCMS installed. You can build it from source by following these steps (which should work on Unix-based systems, including macOS):
```bash
git clone [email protected]:mm2/Little-CMS.git
cd Little-CMS
./configure
make
make check
make install
```You can now use `node-lcms` in your project by installing it from npm into your project:
```bash
# using npm
npm install node-lcms# using yarn
yarn add node-lcms
```## API reference
### `convert(options = {})` → `function(color_arr)`
This is a wrapper over the Little CMS's `transicc` utility, which converts colors based on ICC profiles.
```js
let { convert } = require('node-lcms');let conv = convert({
profile_out: '/path/to/some-profile.icc'
});console.log(conv([255, 0, 0]));
```#### Options
`intent`:
| Value | Description |
| ----- | -------------------------------------------- |
| `0` | Perceptual |
| `1` | Relative colorimetric |
| `2` | Saturation |
| `3` | Absolute colorimetric |
| `10` | Perceptual preserving black ink |
| `11` | Relative colorimetric preserving black ink |
| `12` | Saturation preserving black ink |
| `13` | Perceptual preserving black plane |
| `14` | Relative colorimetric preserving black plane |
| `15` | Saturation preserving black plane |Built-in profiles:
| Profile | Description |
| ---------- | ----------------------------------------------- |
| `*Lab2` | D50-based v2 CIEL*a*b |
| `*Lab4` | D50-based v4 CIEL*a*b |
| `*Lab` | D50-based v4 CIEL*a*b |
| `*XYZ` | CIE XYZ (PCS) |
| `*sRGB` | sRGB color space |
| `*Gray22` | Monochrome of Gamma 2.2 |
| `*Gray30` | Monochrome of Gamma 3.0 |
| `*null` | Monochrome black for all input |
| `*Lin2222` | CMYK linearization of gamma 2.2 on each channel |### Where to get more ICC profiles?
- [ICC Profile Registry](http://www.color.org/registry/index.xalter)
- [ECI](http://www.eci.org/en/downloads)> If you have Adobe products installed, you can find a bunch of common ICC profiles on your computer at `/Library/Application Support/Adobe/Color/Profiles/Recommended` (on macOS)
## Acknowledgements
This project is indebted to James Pederson's [node-transicc](https://github.com/jpederson/node-transicc) for instructions on how to install LittleCMS from source and how to interface with it in Node.js.
## See also
- [rust-lcms2](https://github.com/kornelski/rust-lcms2)