Skip to content

Instantly share code, notes, and snippets.

View maddrag0n's full-sized avatar
🇪🇺

Josh Li maddrag0n

🇪🇺
  • DUS
View GitHub Profile
@Artoria2e5
Artoria2e5 / chroma.ts
Last active November 6, 2026 12:16
Maximize chroma in Oklch without changing L and h
// This is just https://bottosson.github.io/posts/gamutclipping/ crudely translated to TS
type Lab = { L: number; a: number; b: number };
type RGB = { r: number; g: number; b: number };
type sRGB = { r: number; g: number; b: number };
function linear_srgb_to_oklab(c: RGB): Lab {
const l = 0.4122214708 * c.r + 0.5363325363 * c.g + 0.0514459929 * c.b;
const m = 0.2119034982 * c.r + 0.6806995451 * c.g + 0.1073969566 * c.b;
const s = 0.0883024619 * c.r + 0.2817188376 * c.g + 0.6299787005 * c.b;