Ajuste o contraste de uma cor por fator
Afaste os canais de uma cor do cinza médio 128 para dar mais força, ou aproxime-os para suavizá-la: #3366cc com fator 1.5 vira #0d59f2. Um fator 1 não muda nada. Grátis no seu navegador.
- Grátis
- Funciona no seu navegador
- Sem cadastro
- Seus dados não saem do seu aparelho
Executar grátis
Exemplo resolvido
- Cor
- #3366cc
- Fator
- 1,5
- Cinza médio
- 128
- Hex
- #0d59f2
- Resistência (Ω)
- 13
- G
- 89
O contraste em torno do cinza médio é o gesto clássico de imagem que estica ou comprime cada canal vermelho, verde e azul afastando-o do ponto médio de oito bits cento e vinte e oito, em vez de deslizar a luminosidade HSL ou elevar uma potência gama. Designers, autores de tokens e engenheiros gráficos usam um fator de contraste quando querem amostras mais vivas ou mais planas sem girar a roda de matiz nem tratar a cor como uma fotografia inteira. Esta ferramenta aceita uma cor hex CSS e um fator finito no intervalo fechado de zero a dez, aplica a regra por canal de que a saída é o cinza médio mais a distância com sinal a partir desse cinza vezes o fator, limita cada canal ao intervalo legal de zero a duzentos e cinquenta e cinco e devolve o hex ajustado e os inteiros RGB. Um fator de um deixa a amostra inalterada; um fator de zero colapsa todos os canais no cinza médio; valores acima de um aumentam o contraste e podem recortar luzes ou sombras.
O que o contraste em torno do cinza médio faz nos canais RGB
Comece com uma cor hex CSS como hash três três seis seis c c ou a forma curta hash três seis c. O analisador expande códigos de três dígitos, passa os dígitos para minúsculas e converte cada par em inteiros vermelho, verde e azul de zero a duzentos e cinquenta e cinco. O cinza médio nessa escala de oito bits é cento e vinte e oito: o pivô inteiro usado pelos controles clássicos de contraste em programas de pintura e pipelines raster.
Cada canal é reescrito com aritmética comum: subtraia o cinza médio, multiplique pelo fator de contraste, some de novo o cinza médio, arredonde ao inteiro mais próximo e limite à caixa legal de zero a duzentos e cinquenta e cinco. Canais que já estão no cinza médio não se movem para nenhum fator finito, porque a distância com sinal é zero. Canais mais escuros que o cinza médio afastam-se dele quando o fator é maior que um e aproximam-se quando o fator está entre zero e um.
Canais mais claros que o cinza médio fazem o mesmo no sentido oposto. Um fator exatamente igual a um é identidade: cada canal arredondado coincide com a entrada. Um fator de zero achata a amostra no cinza médio nos três canais, que é o código hex oito zero oito zero oito zero.
Fatores grandes recortam: um vermelho escuro pode chegar a zero e um azul claro a duzentos e cinquenta e cinco, e esses extremos recortados ficam nas paredes legais em vez de dar a volta. O mesmo fator se aplica de forma independente a vermelho, verde e azul, de modo que o equilíbrio relativo dos canais pode mudar em relação a uma história de contraste HSL que congela o matiz.
Essa diferença é intencional: este contrato é o esticamento linear em torno do cinza médio, não um controle perceptual nem uma razão WCAG entre duas cores. Formas hex com alfa de quatro ou oito dígitos são rejeitadas porque o contrato é apenas RGB opaco.
Contrato de entrada, formato da resposta e validação
Envie dois campos: color como string hex e factor como número finito de zero a dez inclusive. Cada amostra inclui role, hex, inteiros r g b e uma string rgb imprimível. Os campos de nível superior hex, r, g e b espelham o resultado ajustado por contraste para clientes de uma linha.
Uma string formula curta documenta a regra do cinza médio por canal para documentação e suporte. Verificações típicas: aplicar o fator um ponto cinco a um azul médio, aplicar o fator zero ponto cinco para achatar um vermelho saturado em direção ao cinza, confirmar que o fator um devolve o hex original, confirmar que o fator zero produz cinza médio e rejeitar o fator quinze ou uma cor ausente.
Conecte o formulário gratuito do navegador para prévias rápidas e chame o mesmo contrato a partir de scripts quando precisar de geração em massa de tokens ou checagens de integração contínua. Mantenha o fator no intervalo documentado em vez de confiar em recortes silenciosos do próprio multiplicador: esta ferramenta falha de forma explícita diante de um fator inválido para que sistemas de design e pipelines de renderização permaneçam previsíveis em todos os ambientes.
Onde um fator de contraste no cinza médio agrega valor
Equipes de marca e produto costumam guardar um único hex protagonista e precisam de um companheiro mais vivo ou mais discreto sem abrir um editor de imagem completo nem inventar a olho uma segunda cor de marca. Autores de tokens de design geram rampas de contraste varrendo um fator sobre uma amostra base quando clarear ou escurecer em HSL parece pastel demais e a gama parece específica demais para a tela.
Ferramentas de apresentação e marketing produzem variantes de campanha a partir de um logotipo saturado: eleve o fator para um cartaz, reduza-o para uma pastilha de fundo suave. Autores de material didático sobre imagem podem mostrar que esticar RGB em torno do cinza médio não é o mesmo que mudar a luminosidade HSL, nem uma curva de potência gama, nem medir o contraste WCAG entre duas cores.
Se mais adiante você precisar comparar dois códigos hex por acessibilidade, aplicar um expoente gama, clarear ou escurecer em HSL ou filtrar uma fotografia inteira, trate isso como intenções de busca e landings separadas em vez de sobrecarregar esta página do fator no cinza médio.
Casos de uso
Intensificar um hex de marca sem mudar o matiz
Eleve uma única cor de logotipo em torno do cinza médio e capture o hex resultante para cartazes, estados hover e revisões de design.
Rampas de tokens suaves a partir de uma amostra
Varra o fator abaixo de um para achatar os meios-tons em direção ao cinza mantendo as mesmas proporções RGB, em vez de deslizar a luminosidade HSL.
Perguntas frequentes
Como o fator de contraste altera a sua cor hex?
Cada canal RGB c vira clamp(round(128 + (c − 128) × factor), 0, 255). O cinza médio permanece fixo; canais mais escuros e mais claros afastam-se de 128 quando o fator é maior que 1 e aproximam-se de 128 quando é menor que 1.
Qual intervalo de fator é permitido?
O fator deve ser um número finito em [0, 10].
Quais formatos hex são aceitos?
Hex CSS de três e seis dígitos, com ou sem hash inicial. Formas com alfa (#rgba / #rrggbbaa) e caracteres não hex são rejeitados.
Quanto custa ajustar o contraste de uma cor?
A ferramenta do navegador é gratuita e roda localmente.
O que fazem os fatores 0 e 1?
Um fator 1 deixa a cor exatamente igual. Um fator 0 leva todos os canais ao cinza médio, então qualquer cor vira #808080. Acima de 1 o contraste aumenta; entre 0 e 1 ele diminui.
Ferramentas relacionadas
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/color/contrast-adjust \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"color":"#3366cc","factor":1.5}'const res = await fetch("https://api.kit.forhosting.com/color/contrast-adjust", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"color": "#3366cc",
"factor": 1.5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/contrast-adjust",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"color": "#3366cc",
"factor": 1.5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/contrast-adjust", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"color":"#3366cc","factor":1.5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"color":"#3366cc","factor":1.5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/contrast-adjust", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"color": "#3366cc",
"factor": 1.5
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.contrast_adjust",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |
Notas técnicas
Strings hex inválidas e fatores fora da faixa permitida falham com um erro invalid_input claro, sem recorte silencioso.
Contrato de entrada, formato da resposta e validação
Color também aceita os aliases hex e base; factor aceita contrast e amount. Campos ausentes, caracteres não hex, comprimentos incorretos, NaN, Infinity, fatores negativos e valores acima de dez falham com invalid_input e não são cobrados. Em caso de sucesso a resposta ecoa a cor de seis dígitos normalizada e o fator numérico, informa mid_gray como cento e vinte e oito e oferece as amostras original e result. O preço das chamadas de API bem-sucedidas é a base publicada de US$ 0,002 por item; falhas de validação não consomem saldo pré-pago.
Onde um fator de contraste no cinza médio agrega valor
Como esta capacidade é um motor parse puro, o preço da API é a base publicada de US$ 0,002 por item bem-sucedido e a validação falha não consome saldo.
Casos de integração
Checagens golden de CI do contraste do tema
Confirme que os tokens de produção ainda coincidem com o esticamento esperado em torno do cinza médio após editar a paleta, sem abrir um editor de imagem.
Perguntas técnicas
O que acontece com factor = 1 e factor = 0?
O fator 1 é identidade: nenhum canal muda, então o hex resultante coincide com o hex de entrada normalizado. O fator 0 colapsa todos os canais no cinza médio 128, que é #808080.