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

Coleção aberta de espaços de cores.
- Fórmulas verificadas
- Faixas convencionais
- JS / WASM / GLSL / LUT / ICC
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 gzipcolor-space/<name>.js– Um espaço independentecolor-space/lite– Conjunto de trabalho de 54 espaços · 29 kB gzipcolor-space/wasm– Conjunto leve como WASM ·.wasmbásico incluídocolor-space/gl– Código-fonte de shader GLSL/WGSLcolor-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 opcionalnaga-wasm(declara Node ≥ 24.12; CI executa na versão 22, onde npm apenas avisa)color-space/lut– LUTs.cubepara Resolve, Premiere, OBS, ffmpeg — verificado contra ACEScolor-space/icc– Perfis de matriz + TRC ou CLUTcolor-space/data.json– Canais, faixas, proveniência, referências, grafo, gamasnpx color-space rgb oklch 255 128 0– CLI, sem instalação:convert(padrão) ·cube·icc·space·spaces·mcp(servidor MCP para agentes)
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
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.
| Biblioteca | Espaços | Faixas | Log de câmera · CAM · histórico | Backends | Velocidade (M op/s)¹ |
|---|---|---|---|---|---|
| color-space | 205 | Convencionais | ✅ | JS · WASM · GLSL/WGSL · LUT · ICC | 5.52 |
| color-space/lite | 54 | Convencionais | logs · HDR · CAM16 | JS · 29 kB gzip | 3.01 ² |
| color-space/wasm | 54 | Convencionais | logs · HDR · CAM16 | WASM | 1.38–4.78× lotes JS ³ |
| culori | 30 | 0–1 | ❌ | JS | 4.46 |
| colorjs.io | ~40 | 0–1 | alguns | JS | 0.23 |
| texel/color | ~16 | 0–1 | ❌ | JS | 3.49 ² |
| chroma-js | ~12 | mistas | ❌ | JS | 1.19 ² |
| d3-color | 6 | mistas | ❌ | JS | 9.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) |