Gerador de Paleta de Imagem
Faça upload de uma imagem e extraia 3 a 24 cores dominantes via k-means clustering. Exporte como HEX, RGB, CSS variables ou Tailwind.
Paleta Extraída
Algoritmo: k-means (até 10 iterações). Pixels reduzidos para max 64k para performance.
Extração de paleta de imagem: algoritmos, espaços de cor e o tradeoff dominante-vs-vibrante
"Tira as cores dessa foto" parece trivial — afinal a foto é feita de cor. Na prática, extrair paleta decente é um dos problemas aplicados de clustering mais interessantes da web moderna. A resposta ingênua (contar pixels, devolver os N mais comuns) entrega paletas chatas dominadas por azul-céu e tom de pele de fundo. A resposta interessante troca dominância pura por proeminência perceptiva: um detalhe pequeno e saturado costuma ganhar de um mar de pixels mortos no fundo. Material You do Google, auto-tint do Photos da Apple, o canvas de capa de álbum do Spotify e todo gerador de tema de IDE desde 2017 disputam o mesmo tradeoff.
Zoológico de algoritmos
- K-means — escolha K centroides aleatórios, atribua cada pixel ao mais próximo, recalcule a média, repita. Barato (~50 ms numa imagem 1000×1000), mas sensível à semente aleatória
- K-means++ — inicialização inteligente dos centroides (Arthur & Vassilvitskii 2007); paletas melhores para o mesmo K, mesmo runtime
- DBSCAN — clustering por densidade, você não fixa K; ótimo para fotos com número desconhecido de cores dominantes
- Mean shift — converge para os modos de densidade; produz menos cores, mas mais representativas
- Quantização Octree — usado por encoders GIF/PNG desde os anos 90; determinístico, muito rápido
- Median cut — algoritmo de Heckbert (1980), ainda base do
color-thiefe donode-vibrant
Por que o espaço de cor importa
A distância euclidiana em RGB é o padrão mas é perceptivamente errada — saltos numéricos iguais não parecem iguais para o olho. O CIELAB (1976) foi desenhado para uniformidade perceptiva: Delta E abaixo de 2,3 é praticamente a diferença mínima perceptível. O OKLab (Björn Ottosson, 2020) corrige artefatos de hue do CIELAB e é o que o CSS Color 4 usa em oklch(). Rodar k-means em OKLab em vez de RGB devolve paletas muito mais parecidas com o que um designer escolheria a olho — ao custo de duas conversões a mais por pixel. O Material You usa OKLab internamente; o node-vibrant ainda usa HSL por compatibilidade.
// Pseudocódigo: score de proeminência ponderado
score(pixel) = saturação(pixel) * 0.5
+ frequência(pixel) * 0.3
+ proximidadeCentro(pixel) * 0.2
Truques de pré-processamento que realmente importam
- Downsample antes — k-means num thumbnail 100×100 entrega essencialmente a mesma paleta que a imagem inteira a 1/100 do custo
- Blur gaussiano — mata o ruído de JPEG que geraria centroides fantasmas
- Peso por saturação — multiplique o peso de cada pixel pela saturação HSV para que cinzas de fundo percam para acentos vivos
- Viés de centro — produtos e sujeitos ficam no centro do quadro; pese pixels centrais mais alto
- Mascaramento de bordas — passe filtro Sobel e descarte pixels em bordas duras; remove artefatos de anti-aliasing
Onde isso roda em produção
O Material You (Android 12, 2021) lê o wallpaper do usuário e gera um tema de cinco paletas tonais via a biblioteca open-source material-color-utilities. O Spotify Canvas casa a cor dominante do vídeo em loop com a UI do player. O Apple Photos auto-tinta a tela now-playing do iOS usando extração de paleta. O ColorMind (2017) foi um pioneiro RNN que aprendeu paletas de designers — entrega resultado mais estético, mas mais lento que clustering puro. Na web, color-thief, node-vibrant e os extratores via Canvas API rodam tudo num Web Worker para a UI não travar nos 50–100 ms da extração.
Perguntas frequentes
Devolvo dominante ou vibrante? Depende do caso. Temização de UI quer vibrante (Material You escolhe o swatch mais saturado como primária). Reportar "a cor dessa foto de produto" quer dominante. Melhor prática: devolver os dois e deixar o consumidor escolher.
Quão rápida é a extração no navegador? Menos de 100 ms para uma imagem 1024×1024 com k-means num thumbnail 100×100. Extrair direto da imagem inteira leva 1–3 segundos e é desnecessário.
Extratores com IA são melhores que k-means? Produzem paletas mais estéticas, estilo designer (ColorMind, Khroma, Coolors), mas dependem de inferência em nuvem. Para resultado determinístico, offline e rápido, k-means++ em OKLab é o sweet spot moderno.
Por que minha paleta vem cheia de cinza? Porque o cinza de fundo domina o pixel-count sem dominar a percepção. Adicione peso por saturação (descarte pixels com saturação abaixo de 0,15) e o problema some.
Ferramentas Relacionadas
Gerador de Manuscrito
Converte texto digitado em uma imagem com aparência de letra manuscrita. Útil para tornar trabalhos digitais mais pessoais.
Gerador de Currículo
Preenche um currículo simples (CV) imprimível em A4 a partir de formulário com dados pessoais, formação e experiência.
Gerador de Favicon
Gera favicon a partir de texto/emoji em todos os tamanhos comuns (16, 32, 48, 64, 192, 512). Download como PNG.