Misture duas cores por exclusão e calcule o hexadecimal
O misturador por exclusão combina duas cores hexadecimais nesse modo de mesclagem e retorna a cor resultante exata como hexadecimal normalizado, canais RGB numéricos e uma string RGB de CSS pronta para copiar.
Executar grátis
A exclusão é uma alternativa mais suave e de menor contraste ao modo diferença: cores claras tendem a inverter a outra entrada, cores escuras causam menos alteração e meios-tons iguais podem se aproximar do cinza. As duas entradas são verificadas antes do cálculo; assim, valores ausentes, inválidos ou incompatíveis geram um erro claro, e não um resultado ambíguo.
O que o modo de mesclagem exclusão produz
A exclusão compara as duas cores canal por canal, mas não calcula uma média simples. Em cada canal vermelho, verde e azul, a calculadora normaliza os dois valores, aplica a relação de exclusão e converte o resultado novamente em um canal de oito bits. O preto preserva a outra cor, enquanto o branco a inverte. Valores intermediários criam um contraste mais suave do que o modo diferença costuma produzir. Por isso, a exclusão é útil quando você precisa de uma interação visível entre cores sem bordas agressivas ou separação tonal extrema. A operação é simétrica: trocar a primeira cor pela segunda gera exatamente o mesmo resultado. A ferramenta apresenta as versões normalizadas das duas entradas ao lado da saída para que você confirme o cálculo. Ela também identifica o modo de mesclagem na resposta, o que ajuda ao armazenar resultados com outras transformações ou compará-los em um fluxo automatizado de design. O canal alfa foi excluído de propósito: cada entrada representa uma cor RGB opaca, mantendo a resposta previsível e portátil.
Como as entradas hexadecimais são validadas e calculadas
Informe cada cor com três ou seis dígitos hexadecimais. O sinal # no início é opcional, e letras maiúsculas ou minúsculas são aceitas. A notação de três dígitos é expandida antes do cálculo; portanto, #369 se torna #336699. Nomes de cores CSS, canais alfa, sintaxe funcional rgb(), comentários em volta do valor e sequências parcialmente válidas não são aceitos. Essas regras rígidas impedem que um erro de digitação seja interpretado silenciosamente como outra cor. Após a validação, cada canal usa a equação padrão de exclusão: os dois valores são somados e duas vezes o produto dividido por 255 é subtraído. O resultado é arredondado para o canal inteiro mais próximo, permitindo a representação em RGB convencional de oito bits e hexadecimal de seis dígitos. A ordem do cálculo não depende do idioma, das configurações do computador, do horário, de valores aleatórios nem de um serviço externo. As mesmas entradas sempre retornam os mesmos campos e valores JSON. Como ambas são obrigatórias, a ausência de uma cor é indicada antes de qualquer resultado, com o nome do campo correspondente.
Como usar o resultado em design e desenvolvimento
Use o hexadecimal retornado onde uma cor CSS opaca for aceita ou copie a string RGB para uma folha de estilos, token de design, operação de canvas ou caso de teste. O objeto RGB numérico separado é conveniente para códigos que precisam examinar canais sem analisar outra string. A mesclagem por exclusão ajuda a visualizar detalhes sobrepostos em interfaces, cartazes, camadas fotográficas, arte generativa e estados de foco do ponteiro quando se deseja um efeito diferença com menor contraste. Ela também fornece uma referência determinística para conferir se dois sistemas de renderização concordam com a matemática da mesclagem. Lembre-se de que a calculadora combina somente valores de cor: ela não compõe transparência, não considera o fundo de um elemento, não converte perfis de cor nem reproduz todos os detalhes de um aplicativo gráfico específico. Para uma comparação visual útil, mantenha a saída no mesmo fluxo RGB das cores de origem. O navegador permite experimentar rapidamente; uma solicitação de API custa US$ 0,002 quando o cálculo integra um processo repetível. Como não há dependência de rede, a operação também atende ferramentas de build e testes que exigem resultados estáveis.
Casos de uso
Visualizar um contraste mais suave
Calcule a cor opaca criada quando dois valores da paleta interagem por exclusão antes de aplicar o efeito a um layout.
Criar tokens de design determinísticos
Gere uma cor hexadecimal derivada e estável para um tema, estado de componente, sistema de ilustração ou variável CSS reutilizável.
Verificar cálculos de mesclagem
Compare um renderizador ou pipeline gráfico com um pequeno resultado RGB de exclusão explícito, incluindo entradas normalizadas e canais.
Perguntas frequentes
Quanto custa um cálculo pela API?
Cada solicitação pela API custa US$ 0,002. A ferramenta do navegador pode ser usada diretamente nesta página.
Exclusão é igual à mesclagem por diferença?
Não. As duas comparam canais, mas a exclusão geralmente cria um efeito mais suave e com menos contraste que a diferença.
Quais formatos de cor são aceitos?
Use três ou seis dígitos hexadecimais, com um sinal # inicial opcional, como #369, 336699 ou A0B1C2.
A ordem das duas cores faz diferença?
Não. A equação de exclusão é simétrica; portanto, trocar as entradas produz a mesma cor mesclada.
Cores transparentes são compatíveis?
Não. As entradas são cores RGB opacas; valores hexadecimais de quatro ou oito dígitos com alfa são rejeitados.
Por que um editor gráfico pode mostrar uma pequena diferença?
Perfis de cor, fluxos de luz linear, transparência, fundos de composição e arredondamentos específicos do aplicativo podem alterar a aparência. Esta capacidade usa matemática RGB determinística de oito bits.
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/exclusion \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"color1":"#336699","color2":"#CC8844"}'const res = await fetch("https://api.kit.forhosting.com/color/exclusion", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"color1": "#336699",
"color2": "#CC8844"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/exclusion",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"color1": "#336699",
"color2": "#CC8844"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/exclusion", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"color1":"#336699","color2":"#CC8844"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"color1":"#336699","color2":"#CC8844"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/exclusion", 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
{
"color1": "#336699",
"color2": "#CC8844"
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.exclusion",
"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. |