Color Space

Matemática de conversão de cores para mais de 205 espaços de cor, incluindo OKLCH, CIELAB, CAM16, HCT, Display P3, Rec. 2020, logs de câmera, modelos de impressão e aparência. Cada espaço é verificado em relação a uma referência autoritativa. Uma cor entra como qualquer string CSS ou como valores de canal. Ferramentas: convert, gamut, css, space, spaces, cube, shader, icc e code. Sem chave de API, sem configuração e sem rede.

Documentação

color-space test npm size

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

Coleção aberta de espaços de cores.

  • Fórmulas verificadas
  • Faixas convencionais
  • 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]]

Espaços individuais:

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

Importações

  • color-space – Todos os 205 espaços interconectados · 55 kB gzip
  • color-space/<name>.js – Um espaço independente
  • color-space/lite – Conjunto de trabalho de 54 espaços · 29 kB gzip
  • color-space/wasm – Conjunto leve como WASM · .wasm básico incluído
  • color-space/gl – Código-fonte de shader GLSL/WGSL
  • color-space/gl/hlsl · color-space/gl/msl – HLSL (DirectX, Unity, Unreal) e Metal, escritos por naga a partir do WGSL · await hlsl('rgb', 'oklch') · requer o peer opcional naga-wasm (declara Node ≥ 24.12; CI executa na versão 22, onde npm apenas avisa)
  • color-space/lut – LUTs .cube para Resolve, Premiere, OBS, ffmpeg — verificado contra ACES
  • color-space/icc – Perfis de matriz + TRC ou CLUT
  • color-space/data.json – Canais, faixas, proveniência, referências, grafo, gamas
  • npx color-space rgb oklch 255 128 0 – CLI, sem instalação: convert (padrão) · cube · icc · space · spaces · mcp (servidor MCP para agentes)

Atualizando da v2?

Agentes

Ferramentas MCP – convert · gamut · css · space · spaces · cube · shader · icc · code – para que agentes chamem matemática verificada em vez de adivinhar. Uma cor entra como qualquer string CSS ('#ff8000', 'oklch(0.7 0.1 50)', 'rebeccapurple') ou como valores de canal; shader escreve a conversão como GLSL, WGSL, HLSL ou MSL, code fornece a chamada JS e seu equivalente verificado em ciência da cor.

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, qualquer projeto .mcp.json:

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

Plugin Claude Code (o servidor mais uma skill): /plugin marketplace add colorjs/color-space, depois /plugin install color-space@color-space. Docker: docker build -t color-space-mcp . e execute com docker run -i --rm color-space-mcp.

Via HTTP (Streamable HTTP, sem estado): npx -y color-space mcp --http 8787 em localhost, ou hospede fetch de color-space/mcp.js em um Worker, Deno ou Bun. Skill para agentes que carregam skills: plugins/claude/skills/color-space.

Espaços

Display & web
sRGB · Display P3 · Rec. 2020 · Linear-light sRGB · Rec. 709 · ProPhoto RGB · Adobe RGB (1998) · DCI-P3 · Linear Display P3 · Linear Rec. 2020 · Linear Adobe RGB (1998) · Linear ProPhoto RGB · 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

Remixes 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

Colorimetria & pesquisa
CIE XYZ (D65) · CIE xyY · LMS · CIE XYZ (D50) · CIE 1976 u′v′ · CCT + Duv · Temperatura de cor (Kelvin) · Triângulo de Maxwell · Comprimento de onda · XYZ D65 absoluto · LogLuv · MacLeod–Boynton · DKL · Escala de cinza · Comprimento de onda dominante / DSH · Cromaticidade rg · Yrg (Kirk 2019) · XYB · OSA-UCS · TSL · YES · Ohta I₁I₂I₃ · lαβ

Vídeo & broadcast
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 · Linear Rec. 2100 · ICaCb · Y′D′zD′x

Filme & câmera
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

Impressão & pintura
CMYK · Munsell · RYB · CMY · RAL Design · Coloroid · Ostwald

Motivação

Uma coleção completa de espaços de cores: uma API mínima, fórmulas verificadas. Enquanto alternativas focam em espaços de cores digitais, este projeto adota uma perspectiva mais ampla, cobrindo também espaços históricos e interdisciplinares. Efeitos colaterais: artigos corrigidos, educação em cores, casos de teste para compiladores JS→WASM (porffor, jz).

Não é uma caixa de ferramentas de cores — parsing, interpolação, ΔE, mapeamento de gama, contraste, paletas, alfa ficam de fora. Pantone, NCS, RAL Classic e catálogos de amostras licenciados semelhantes não são abertos e também ficam de fora.

Créditos

Agradecimentos aos pesquisadores, teóricos, especificadores, implementadores e às bibliotecas que ajudaram este projeto a acontecer.

BibliotecaEspaçosFaixasLog de câmera · CAM · históricoBackendsVelocidade (M op/s)¹
color-space205Convencionais✅JS · WASM · GLSL/WGSL · LUT · ICC5.52
color-space/lite54Convencionaislogs · HDR · CAM16JS · 29 kB gzip3.01 ²
color-space/wasm54Convencionaislogs · HDR · CAM16WASM1.38–4.78× lotes JS ³
culori300–1❌JS4.46
colorjs.io~400–1algunsJS0.23
texel/color~160–1❌JS3.49 ²
chroma-js~12mistas❌JS1.19 ²
d3-color6mistas❌JS9.35 ²
¹ média geométrica, milhões de chamadas escalares por segundo nas 7 conversões compartilhadas npm run benchmark (rgb ⇄ lab · hsl · oklab, rgb → p3), entradas rotacionando por uma tabela de 256 cores; mediana de 3 execuções em 2026-10-03 conforme o benchmark imprime, 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. Os números absolutos variam com a máquina; as proporções são a afirmação · ² medido no subconjunto que ele implementa — color-space no mesmo subconjunto: lite's 4 (lab, oklab; medido antes de lite ganhar hsl e p3) 3.09 · texel's 3 (oklab, p3) 2.76 · chroma-js's 6 6.45 · d3-color's 4 (lab, hsl) 9.28 · ³ aceleração WASM sobre a API de lote JS, rgb → cada um dos 26 alvos que ele tinha então sobre 1M de pixels (os 27 adicionados desde então ainda não foram medidos), medianas por alvo de 3 execuções adicionais no mesmo dia (menor em Jzazbz e JzCzHz)

CC0 · ॐ