jsColorEngine samples

Soft proof + CMYK separations

Load an image, pick a press profile and rendering intent, see the simulated print output alongside the four C / M / Y / K ink plates. Hover any canvas for a floating colour picker with source sRGB, absolute Lab, CMYK ink percentages, CMYK round-trip Lab, and both ΔE 00 (perceptual) and ΔE 76 (geometric). The split swatch at the top shows source RGB (left) vs soft-proof RGB (right) so you can see the gamut compression at a glance.

Source: iccimage.js · API reference: ICCImage.md · License: MIT · Lab uses relative colorimetric (D50-adapted)

Original vs soft proof

Original (sRGB)

Soft proof — simulated press output

CMYK separations

Each plate below is the actual ink-channel data from the toSeparation() output, rendered via renderChannelAs().

Performance breakdown

Profile load
Image pixels
Cache

Cold run (LUT build + transform)

Proof (src→cmyk→sRGB)
Separation (src→cmyk)
Canvas render
Total

Warm run (cached LUT, transform only)

Proof
Proof MPx/s
Separation
Sep MPx/s
Canvas render
Total

Cold = first run (LUT build + transform). Warm = second run (cached LUT, transform only). Transform and canvas render are timed separately. MPx/s is for the warm transform pass only.