Removedor de fundo open source que funciona inteiramente no navegador com WebGPU ou WebAssembly, sem enviar imagens.
lokesh/color-thief
Biblioteca JavaScript que extrai as cores predominantes e paletas de cores de imagens no navegador e no Node.js.
- Estrelas
- 13,658
- Forks
- 1,310
- Issues abertas
- 0
- Último commit
- há 3 meses
O que é?
Color Thief recebe uma imagem (um img, canvas, frame de vídeo ou um caminho de arquivo ou Buffer no Node) e retorna sua cor predominante, uma paleta com várias cores ou amostras semânticas, como Vibrant, Muted, DarkVibrant e LightMuted. Cada resultado é um objeto Color com métodos auxiliares para gerar saídas em hex, RGB, HSL, OKLCH e CSS, além de recomendações de cor para texto e taxas de contraste WCAG.
A mesma API funciona no navegador e no Node.js, com funções síncronas para uso no navegador e funções assíncronas para ambos os ambientes. Também oferece extração progressiva de paletas, extração em tempo real de vídeo ou canvas por meio de observe(), amostragem de regiões usando coordenadas fracionárias e saída Display P3 para imagens de ampla gama de cores. É possível cancelar a extração com um AbortSignal, e a biblioteca não tem dependências de runtime. Os tipos TypeScript estão incluídos.
Uma CLI complementar, colorthief-cli, exibe as cores como amostras ANSI, JSON ou propriedades personalizadas de CSS. No Node, a decodificação de imagens depende do sharp.
Recursos principais
- 01Extrai de uma imagem uma cor predominante, uma paleta com várias cores ou amostras semânticas.
- 02Oferece a mesma API no navegador e no Node.js, com variantes síncronas e assíncronas.
- 03Atualiza paletas em tempo real a partir de elementos video, canvas ou img por meio de observe().
- 04Amostra uma região da imagem usando coordenadas fracionárias independentes da resolução.
- 05Retorna objetos Color com saídas em hex, RGB, HSL, OKLCH e CSS, além de taxas de contraste WCAG.
- 06Inclui uma CLI que exibe amostras ANSI, JSON ou variáveis CSS.
Casos de uso
- Escolher uma cor de fundo ou de destaque que combine com a foto de um produto ou álbum em uma página web.
- Criar efeitos de iluminação ambiente ou gradientes que acompanham um vídeo em reprodução.
- Verificar a acessibilidade do contraste do texto em relação às cores predominantes de uma imagem.
- Gerar variáveis de cor CSS em lote a partir de imagens em um script de build.
Tópicos
Perguntas frequentes
- O que é color-thief?
- Biblioteca JavaScript que extrai as cores predominantes e paletas de cores de imagens no navegador e no Node.js. Color Thief recebe uma imagem (um img, canvas, frame de vídeo ou um caminho de arquivo ou Buffer no Node) e retorna sua cor predominante, uma paleta com várias cores ou amostras semânticas, como Vibrant, Muted, DarkVibrant e LightMuted. Cada resultado é um objeto Color com métodos auxiliares para gerar saídas em hex, RGB, HSL, OKLCH e CSS, além de recomendações de cor para texto e taxas de contraste WCAG.
- color-thief é gratuito? Qual é a licença?
- color-thief é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
- color-thief ainda é mantido?
- Atualizado nos últimos 6 meses. O último commit de color-thief foi em 3 de ago. de 2026.
- Para que posso usar color-thief?
- Escolher uma cor de fundo ou de destaque que combine com a foto de um produto ou álbum em uma página web. Criar efeitos de iluminação ambiente ou gradientes que acompanham um vídeo em reprodução. Verificar a acessibilidade do contraste do texto em relação às cores predominantes de uma imagem. Gerar variáveis de cor CSS em lote a partir de imagens em um script de build.
- Onde consigo color-thief?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/lokesh/color-thief
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Uma reimplementação em TypeScript do cliente ADB que roda em navegadores Chromium, Node.js e Electron e se conecta a dispositivos Android via WebUSB.
Framework personalizável em TypeScript para criar editores de rich text com React, com núcleo sem schema e arquitetura baseada em plugins.
Um framework React para criar aplicações web full-stack, com ferramentas baseadas em Rust para agilizar os builds.
Uma implementação de FFmpeg em WebAssembly puro e JavaScript que permite gravar, converter e transmitir vídeo e áudio no navegador.
Toolkit JavaScript para renderizar e editar diagramas de processos BPMN 2.0 no navegador.