jsColorEngine samples

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

Ready Live Video Soft Proof Real-time video colour management. Every frame decoded and soft-proofed through a pre-built 3D CLUT — pure JS and WASM, no workers. 40+ fps on 720p. The “you can’t do that in JS” demo. Ready Soft Proof sRGB → CMYK soft proof + C/M/Y/K plate previews. Uses 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. New 3D Gamut Overlay ICC profiles in Lab. Device-face mesh (RGB cube / CMYK cuboid), optional chroma snap, fade, solid / glass / wire / points. Drag to orbit. Modern Three.js.
Planned Intent Comparison Side-by-side perceptual / relative / saturation / absolute through the same proof profile.

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