jsColorEngine — browser samples
Runnable demos of the jsColorEngine
ICC colour management library. Every demo is zero-build vanilla JS
driven by the small
ICCImage helper module.
Engine: MPL-2.0 · Samples: MIT (LICENSE) · Live: o2creative.co.nz/jscolorengine · Source: GitHub
Demos
toProof, toSeparation,
renderChannelAs.
Ready
jsCE vs lcms
Pixel-diff comparison between jsColorEngine and lcms-wasm.
Accuracy + speed in one view, with amplified diff slider.
Ready
CMYK → RGB via LUT
Real-world LUT workflow: build once with profiles, ship JSON,
run anywhere. Builds two CMYK→RGB LUTs (jsCE + lcms),
serialises to JSON, rebuilds Transforms from the JSON,
shows the three-way comparison + ΔP table.
Demonstrates emulation mode (jsCE kernel + lcms math).
New — v1.4.4
LUT TIFF Builder
Generate identity LUT TIFFs for visual editing in Photoshop, Affinity,
or GIMP. Edit in your colour-managed editor, save as TIFF, reimport as
a portable LUT JSON. Captures any CMS transform — profile conversions,
tone curves, CMYK separations. Supports 1D Gray, 3D RGB, 4D CMYK.
Ready
Colour Calculator
ICC-aware space converter — Lab, XYZ, RGB, CMYK.
Uses the object pipeline
(transform.transform(colorObj)) and
convert.Lab2XYZ() / XYZ2Lab().
Real press profiles for CMYK. Round-trip ΔE readout.
Running locally
The engine ships a UMD bundle at
browser/jsColorEngineWeb.js. Build it once, then
start the dev server:
npm run browser # build the UMD bundle
npm run serve # start dev server on :8080 (samples + bench)
Then open the landing page or /samples/samples.html for the demo index. The bench is at /samples/bench/.
ICCImage helper
All demos share a small immutable image wrapper:
iccimage.js.
It handles the “load image → transform → display”
plumbing so each demo stays under ~100 lines.
Full API reference:
ICCImage.md