Ajustar temperatura de cor da imagem
Esta calculadora de temperatura de cor transforma os valores médios de vermelho, verde e azul de uma imagem, junto com um deslocamento em Kelvin, em três multiplicadores de canal.
Executar grátis
Ela estima a temperatura de cor correlacionada da média, aplica a mudança mais quente ou fria solicitada e retorna ganhos RGB normalizados. Você pode usar o resultado em um fluxo de cores com luz linear para obter um balanço de branco reproduzível sem enviar a imagem. O cálculo é determinístico, e cada solicitação de API custa US$ 0,002.
Prepare um valor RGB médio representativo
Comece com a média aritmética de cada canal sRGB de 8 bits nos pixels que devem representar a correção. Informe esses valores como avg_r, avg_g e avg_b na escala habitual de 0 a 255. Uma média da imagem inteira funciona para fotografias com iluminação ampla, lotes de produtos, miniaturas e prévias automatizadas. Porém, em uma imagem com tema fortemente colorido, a média de uma região neutra pode descrever a iluminação com mais fidelidade do que o quadro todo. Uma parede vermelha ou um oceano azul pode dominar a média global mesmo quando o balanço de branco da câmera já está correto. A calculadora não examina pixels, reconhece objetos neutros nem separa a iluminação da cor do tema; ela usa exatamente o resumo fornecido por você. Médias totalmente pretas são rejeitadas porque não possuem cromaticidade para estimar a temperatura. Números não finitos e valores fora da faixa de 8 bits também são recusados. Use o mesmo método de amostragem em todo o lote para manter as correções comparáveis.
Escolha o deslocamento em Kelvin e entenda o modelo
Informe shift_kelvin como uma mudança relativa, e não como um destino absoluto. Um valor positivo aumenta a temperatura estimada e cria uma correção mais fria; um valor negativo a reduz e cria uma correção mais quente. São aceitos deslocamentos de -10,000 a 10,000 Kelvin, e o alvo resultante deve permanecer entre 1,000 e 40,000 Kelvin. O cálculo primeiro lineariza os canais sRGB médios, converte-os em cromaticidade CIE XYZ e estima a temperatura de cor correlacionada pela aproximação cúbica de McCamy. Em seguida, avalia curvas RGB determinísticas de corpo negro nas temperaturas estimada e alvo. A razão entre esses dois pontos brancos se torna um conjunto de ganhos, normalizado para que o verde seja um. Trata-se de uma aproximação de engenharia, não de uma medição espectral. A temperatura correlacionada é mais significativa perto do locus planckiano; por isso, médias muito saturadas geram apenas uma estimativa aproximada. O método e as temperaturas retornados tornam essa premissa explícita para auditoria.
Aplique os multiplicadores sem prejudicar a imagem
Aplique red_multiplier, green_multiplier e blue_multiplier a valores RGB em luz linear, não diretamente aos números de canal de 8 bits codificados com gama. Um fluxo confiável decodifica sRGB para luz linear, multiplica cada canal pelo ganho correspondente, trata valores acima da faixa de exibição com exposição ou mapeamento de tons e codifica novamente em sRGB. Multiplicar bytes codificados pode parecer razoável em um pequeno ajuste, mas não preserva a relação pretendida entre luz e valores armazenados. O verde é normalizado em um, portanto o resultado expressa equilíbrio cromático e não uma alteração geral de exposição. Vermelho ou azul podem ultrapassar um, causando recorte nas áreas claras; processe com ponto flutuante ou profundidade suficiente antes da exportação final. Teste imagens representativas antes de aplicar a correção a uma coleção grande, principalmente quando a média vier de uma cena colorida. A API custa US$ 0,002 por solicitação, enquanto a calculadora no navegador executa localmente a mesma aritmética determinística.
Casos de uso
Normalizar um lote de fotos de produtos
Calcule ganhos repetíveis com o mesmo método de amostragem antes de exportar imagens de catálogo.
Criar um controle de balanço de branco
Transforme o movimento de um seletor Kelvin em multiplicadores RGB explícitos para um editor web ou desktop.
Registrar correções reproduzíveis
Armazene temperaturas estimada e alvo com os ganhos ao lado do arquivo em um fluxo automatizado de mídia.
Perguntas frequentes
O que um deslocamento Kelvin positivo faz?
Ele eleva a temperatura de cor alvo estimada e produz uma correção mais fria, com relativamente mais azul e menos vermelho.
Qual faixa de deslocamento é aceita?
A mudança deve ficar entre -10,000 e 10,000 Kelvin, inclusive, e o alvo resultante entre 1,000 e 40,000 Kelvin.
Por que o multiplicador verde é sempre um?
Os ganhos são normalizados pelo verde para representar o equilíbrio de cor separadamente de um ajuste de exposição.
Devo multiplicar diretamente valores RGB de 8 bits?
Não. Decodifique sRGB para luz linear, aplique os ganhos, controle as áreas claras e codifique novamente em sRGB.
Qual é a precisão da temperatura estimada?
É uma aproximação baseada na cromaticidade média. Funciona melhor quando a amostra representa iluminação neutra e pior com cores muito saturadas.
Quanto custa uma solicitação de API?
Cada solicitação de API custa US$ 0,002. A versão web realiza gratuitamente o mesmo cálculo determinístico no dispositivo.
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/image/color-temperature-adjust \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"avg_r":142,"avg_g":128,"avg_b":110,"shift_kelvin":1200}'const res = await fetch("https://api.kit.forhosting.com/image/color-temperature-adjust", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"avg_r": 142,
"avg_g": 128,
"avg_b": 110,
"shift_kelvin": 1200
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/color-temperature-adjust",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"avg_r": 142,
"avg_g": 128,
"avg_b": 110,
"shift_kelvin": 1200
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/color-temperature-adjust", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"avg_r":142,"avg_g":128,"avg_b":110,"shift_kelvin":1200}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"avg_r":142,"avg_g":128,"avg_b":110,"shift_kelvin":1200}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/color-temperature-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
{
"avg_r": 142,
"avg_g": 128,
"avg_b": 110,
"shift_kelvin": 1200
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.color_temperature_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.
Limites
min_shift_kelvin | -10000 |
max_shift_kelvin | 10000 |
min_temperature_kelvin | 1000 |
max_temperature_kelvin | 40000 |
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. |