Color Space

Matemáticas de conversión de color para más de 205 espacios de color, incluyendo OKLCH, CIELAB, CAM16, HCT, Display P3, Rec. 2020, registros de cámara, modelos de impresión y apariencia. Cada espacio está verificado con una referencia autoritativa. Un color se introduce como cualquier cadena CSS o como valores de canal. Herramientas: convert, gamut, css, space, spaces, cube, shader, icc y code. Sin clave de API, sin configuración y sin red.

Documentación

color-space test npm size

the Ostwald hue circle at full color, shown continuously and in ten steps

Colección abierta de espacios de color.

  • Fórmulas verificadas
  • Rangos convencionales
  • JS / WASM / GLSL / LUT / ICC

Atlas →

Uso

import space from 'color-space';

space.rgb.oklch(255, 128, 0);        // → [0.732, 0.186, 53] — modern CSS
space.slog3.rec2020(0.5, 0.5, 0.5);  // camera log → UHD wide gamut
space.rgb.xyz(300, -10, 0);          // → [59.7, 30.6, 2.8] — out-of-range in, unclamped out

// batch
space.rgb.oklch([255, 128, 0,  0, 255, 128]); // [0.732, 0.186, 53,  0.875, 0.234, 151]

// meta
space.lab.range;                     // [[0, 100], [-125, 125], [-125, 125]]

Espacios individuales:

import oklch from 'color-space/oklch.js';
oklch.rgb(0.65, 0.25, 180);          // matches CSS oklch(0.65 0.25 180)

Importaciones

  • color-space – Todos los 205 espacios interconectados · 55 kB gzip
  • color-space/<name>.js – Un espacio independiente
  • color-space/lite – Conjunto de trabajo de 54 espacios · 29 kB gzip
  • color-space/wasm – Conjunto ligero como WASM · .wasm básico incluido
  • color-space/gl – Código fuente de shaders GLSL/WGSL
  • color-space/gl/hlsl · color-space/gl/msl – HLSL (DirectX, Unity, Unreal) y Metal, escritos por naga desde WGSL · await hlsl('rgb', 'oklch') · requiere el peer opcional naga-wasm (declara Node ≥ 24.12; CI lo ejecuta en 22, donde npm solo advierte)
  • color-space/lut – LUTs .cube para Resolve, Premiere, OBS, ffmpeg — verificado frente a ACES
  • color-space/icc – Perfiles de matriz + TRC o CLUT
  • color-space/data.json – Canales, rangos, procedencia, referencias, grafo, gamas
  • npx color-space rgb oklch 255 128 0 – CLI, sin instalación: convert (predeterminado) · cube · icc · space · spaces · mcp (servidor MCP para agentes)

¿Actualizando desde v2?

Agentes

Herramientas MCP – convert · gamut · css · space · spaces · cube · shader · icc · code – para que los agentes llamen matemáticas verificadas en lugar de adivinar. Un color entra como cualquier cadena CSS ('#ff8000', 'oklch(0.7 0.1 50)', 'rebeccapurple') o como valores de canal; shader escribe la conversión como GLSL, WGSL, HLSL o MSL, code proporciona la llamada JS y su equivalente verificado de ciencia del color.

claude mcp add color-space -- npx -y color-space mcp                                      # Claude Code
code --add-mcp '{"name":"color-space","command":"npx","args":["-y","color-space","mcp"]}'  # VS Code

Claude Desktop claude_desktop_config.json, cualquier proyecto .mcp.json:

{ "mcpServers": { "color-space": { "command": "npx", "args": ["-y", "color-space", "mcp"] } } }

Plugin de Claude Code (el servidor más una habilidad): /plugin marketplace add colorjs/color-space, luego /plugin install color-space@color-space. Docker: docker build -t color-space-mcp . y ejecútalo con docker run -i --rm color-space-mcp.

Sobre HTTP (Streamable HTTP, sin estado): npx -y color-space mcp --http 8787 en localhost, o aloja fetch desde color-space/mcp.js en un Worker, Deno o Bun. Habilidad para agentes que cargan habilidades: plugins/claude/skills/color-space.

Espacios

Pantalla y web
sRGB · Display P3 · Rec. 2020 · sRGB de luz lineal · Rec. 709 · ProPhoto RGB · Adobe RGB (1998) · DCI-P3 · Display P3 lineal · Rec. 2020 lineal · Adobe RGB (1998) lineal · ProPhoto RGB lineal · scRGB · RIMM RGB · CIE RGB · NTSC RGB (1953) · PAL / SECAM RGB · Apple RGB · SMPTE-240M · ECI RGB v2 · Adobe Wide Gamut RGB · ColorMatch RGB · Bruce RGB · Beta RGB · Best RGB · Don RGB 4 · Ekta Space PS 5 · Russell RGB

Remezclas RGB
HSL · HSV / HSB · HWB · HSI · IHLS · HCG · HCL · HSP · HCY · HSM · oRGB · Prismatic

Perceptual
OKLCH · CIELAB · CAM16 · OKLab · HCT · Okhsl · Okhsv · Okhwb · OKLrAB · OKLrCH · SRLAB2 · proLab · sUCS · IgPgTg · HelmGen · HelmGen LCh · Jzazbz · JzCzHz · IPT · IPT Ragoo 2021 · Izazbz · hdr-IPT · IaPbP · CIELChab · CIELUV · HSLuv · CIELChuv · CIELAB D65 · CIELCh D65 · Msh · HPLuv · DIN99 · DIN99o Lab · DIN99o LCh · DIN99c · DIN99d · Hunter Lab · Hunter Rd,a,b · CIE 1960 UCS · CIE 1964 UVW · Adams–Nickerson Lab · hdr-CIELAB · CIECAM02 · CAM16-UCS · ZCAM · CAM02-UCS · CAM16-LCD · CAM16-SCD · CAM02-LCD · CAM02-SCD · Hellwig 2022 · sCAM · Kim 2009 · RLAB · LLAB · Nayatani 95 · Hunt · ATD95

Colorimetría e investigación
CIE XYZ (D65) · CIE xyY · LMS · CIE XYZ (D50) · CIE 1976 u′v′ · CCT + Duv · Temperatura de color (Kelvin) · Triángulo de Maxwell · Longitud de onda · XYZ D65 absoluto · LogLuv · MacLeod–Boynton · DKL · Escala de grises · Longitud de onda dominante / DSH · Cromaticidad rg · Yrg (Kirk 2019) · XYB · OSA-UCS · TSL · YES · Ohta I₁I₂I₃ · lαβ

Video y transmisión
BT.709 Y′CbCr · ICtCp · ICtCp HLG · IPT-PQ-C2 · BT.2020 Y′CbCr · BT.601 525-line Y′CbCr · BT.601 625-line Y′CbCr · YCbCr (parametrizado) · YUV · YIQ · YPbPr · YCgCo · JPEG YCbCr · YDbDr · YcCbcCrc · xvYCC · SMPTE-C · PhotoYCC · Rec. 2100 PQ · Rec. 2100 HLG · Rec. 2100 lineal · ICaCb · Y′D′zD′x

Cine y cámara
ACEScg · ARRI LogC3 · ARRI Wide Gamut 3 · ACEScc · Sony S-Log3 · S-Gamut3 · Sony S-Gamut3.Cine · ACES2065-1 · ACEScct · ARRI LogC4 · ARRI Wide Gamut 4 · Cineon · DaVinci Wide Gamut / Intermediate · DaVinci Wide Gamut · Sony S-Log2 · Panasonic V-Log · V-Gamut · RED Log3G10 · REDWideGamutRGB · Canon Log · Canon Log 2 · Canon Log 3 · DCI-P3+ · Fujifilm F-Log · Fujifilm F-Log2 · Fujifilm F-Log2 C · Nikon N-Log · Apple Log · Apple Log 2 · Blackmagic Film Gen 5 · Blackmagic Wide Gamut · DJI D-Log · D-Gamut · FilmLight T-Log / E-Gamut · E-Gamut · Kinefinity KineLOG3 · DCDM X′Y′Z′ · Sony S-Log · ACESproxy · ERIMM RGB · Leica L-Log · GoPro Protune · GoPro GP-Log2 · Insta360 I-Log · Xiaomi Mi-Log · OPPO O-Log · O-Log2 · Samsung Log · REDLog · REDLogFilm · RED Log3G12 · Panalog · ViperLog · Filmic Pro 6

Impresión y pintura
CMYK · Munsell · RYB · CMY · RAL Design · Coloroid · Ostwald

Motivación

Una colección completa de espacios de color: una API mínima, fórmulas verificadas. Mientras que las alternativas se centran en espacios de color digitales, este proyecto adopta una perspectiva más amplia, cubriendo también espacios históricos e interdisciplinarios. Efectos secundarios: artículos corregidos, educación sobre color, casos de prueba para compiladores JS→WASM (porffor, jz).

No es una caja de herramientas de color — el análisis, la interpolación, ΔE, el mapeo de gama, el contraste, las paletas y el alfa quedan fuera. Los catálogos de muestras con licencia como Pantone, NCS, RAL Classic y similares no son abiertos y también quedan fuera.

Créditos

Gracias a los investigadores, teóricos, especificadores, implementadores y las bibliotecas que ayudaron a que esto sucediera.

BibliotecaEspaciosRangosLog de cámara · CAM · históricoBackendsVelocidad (M op/s)¹
color-space205Convencionales✅JS · WASM · GLSL/WGSL · LUT · ICC5.52
color-space/lite54Convencionaleslogs · HDR · CAM16JS · 29 kB gzip3.01 ²
color-space/wasm54Convencionaleslogs · HDR · CAM16WASM1.38–4.78× lotes JS ³
culori300–1❌JS4.46
colorjs.io~400–1algunosJS0.23
texel/color~160–1❌JS3.49 ²
chroma-js~12mixtos❌JS1.19 ²
d3-color6mixtos❌JS9.35 ²

¹ media geométrica, millones de llamadas escalares por segundo en las 7 conversiones compartidas de npm run benchmark (rgb ⇄ lab · hsl · oklab, rgb → p3), con entradas rotando a través de una tabla de 256 colores; mediana de 3 ejecuciones el 2026-10-03 tal como lo imprime el benchmark, Node 22.22 / Intel Xeon 2.1 GHz (4 vCPU), culori 4.0.2 · colorjs.io 0.5.2 · @texel/color 1.1.11 · chroma-js 3.2.0 · d3-color 3.1.0. Las cifras absolutas varían con la máquina; las proporciones son la afirmación · ² medido en el subconjunto que implementa — color-space en el mismo subconjunto: lite's 4 (lab, oklab; medido antes de que lite ganara hsl y p3) 3.09 · texel's 3 (oklab, p3) 2.76 · chroma-js's 6 6.45 · d3-color's 4 (lab, hsl) 9.28 · ³ aceleración WASM sobre la API de lotes JS, rgb → cada uno de los 26 objetivos que tenía entonces sobre 1M de píxeles (los 27 añadidos desde entonces aún no se miden), medianas por objetivo de 3 ejecuciones adicionales el mismo día (más bajas en Jzazbz y JzCzHz)

CC0 · ॐ