Ajustar temperatura de color de imagen
Esta calculadora de ajuste de temperatura de color convierte los valores medios rojo, verde y azul de una imagen, junto con un desplazamiento en Kelvin, en tres multiplicadores de canal aplicables.
Ejecutar — gratis
Estima la temperatura de color correlacionada del promedio, aplica el cambio cálido o frío solicitado y devuelve ganancias RGB normalizadas. Usted puede usar el resultado en un flujo de color con luz lineal para lograr un balance de blancos reproducible sin subir la imagen. El cálculo es determinista y la API cuesta $0.002 por solicitud.
Prepare un valor RGB medio representativo
Comience con la media aritmética de cada canal sRGB de 8 bits en los píxeles que deban representar la corrección. Introduzca esos valores como avg_r, avg_g y avg_b en la escala habitual de 0 a 255. Un promedio de toda la imagen resulta útil para fotografías con iluminación uniforme, lotes de productos, miniaturas y vistas previas automatizadas. Sin embargo, cuando el motivo posee un color dominante, el promedio de una zona neutra puede describir mejor la iluminación que el encuadre completo. Una pared roja o un mar azul pueden dominar la media global aunque el balance de blancos de la cámara sea correcto. La calculadora no examina píxeles, identifica objetos neutros ni separa la luz del color del motivo: utiliza exactamente el resumen que usted proporciona. Se rechaza una media totalmente negra porque no contiene cromaticidad para estimar la temperatura. También se rechazan números no finitos y valores fuera del intervalo de 8 bits. Mantenga el mismo método de muestreo en todo el lote para obtener correcciones comparables.
Elija el desplazamiento Kelvin y comprenda el modelo
Introduzca shift_kelvin como cambio relativo, no como destino absoluto. Un valor positivo eleva la temperatura estimada y genera una corrección más fría; uno negativo la reduce y produce una corrección más cálida. Se admiten desplazamientos de -10,000 a 10,000 Kelvin, y el objetivo resultante debe permanecer entre 1,000 y 40,000 Kelvin. Primero se linealizan los canales sRGB medios, se convierten a cromaticidad CIE XYZ y se estima la temperatura correlacionada mediante la aproximación cúbica de McCamy. Después se evalúan curvas RGB de cuerpo negro deterministas para las temperaturas estimada y objetivo. La proporción entre ambos puntos blancos se transforma en ganancias de canal normalizadas para que el verde valga uno. Se trata de una aproximación técnica, no de una medición espectral. La temperatura correlacionada es más significativa cerca del lugar planckiano, por lo que promedios muy saturados solo permiten una estimación orientativa. El método y las temperaturas devueltos dejan constancia de estas premisas.
Aplique los multiplicadores sin dañar la imagen
Aplique red_multiplier, green_multiplier y blue_multiplier a valores RGB en luz lineal, no directamente a números de canal de 8 bits con gamma. Un flujo fiable descodifica sRGB a luz lineal, multiplica cada canal por su ganancia, trata los valores que superan el rango visible mediante exposición o mapeo tonal y vuelve a codificar el resultado en sRGB. Multiplicar bytes codificados puede parecer aceptable con cambios pequeños, pero no conserva la relación prevista entre la luz y los valores almacenados. El verde se normaliza a uno, de modo que el resultado expresa el equilibrio cromático y no un cambio general de exposición. El rojo o el azul pueden superar uno y provocar recorte en las altas luces; trabaje con coma flotante o suficiente profundidad antes de exportar. Revise imágenes representativas antes de procesar una colección grande, sobre todo si la media procede de escenas coloridas. La API cuesta $0.002 por solicitud y la calculadora web realiza localmente la misma operación determinista.
Qué puede hacer con ella
Normalizar un lote de fotos de producto
Calcule ganancias repetibles con el mismo método de muestreo antes de exportar imágenes de catálogo.
Prototipar un control de balance de blancos
Convierta el movimiento de un selector Kelvin en multiplicadores RGB explícitos para un editor web o de escritorio.
Registrar correcciones reproducibles
Guarde las temperaturas estimada y objetivo junto con las ganancias en un flujo automatizado de recursos multimedia.
Preguntas frecuentes
¿Qué hace un desplazamiento Kelvin positivo?
Eleva la temperatura de color objetivo estimada y produce una corrección más fría, con relativamente más azul y menos rojo.
¿Qué intervalo de desplazamientos se admite?
El cambio debe estar entre -10,000 y 10,000 Kelvin, ambos inclusive, y el objetivo resultante entre 1,000 y 40,000 Kelvin.
¿Por qué el multiplicador verde siempre vale uno?
Las ganancias se normalizan respecto al verde para representar el equilibrio cromático con independencia de otro ajuste de exposición.
¿Debo multiplicar directamente valores RGB de 8 bits?
No. Descodifique sRGB a luz lineal, aplique allí las ganancias, gestione las altas luces y vuelva a codificar en sRGB.
¿Qué precisión tiene la temperatura estimada?
Es una aproximación basada en la cromaticidad media. Funciona mejor si la muestra representa iluminación neutra y peor con motivos muy saturados.
¿Cuánto cuesta una solicitud de API?
Cada solicitud de API cuesta $0.002. La versión web realiza gratis el mismo cálculo determinista en el dispositivo.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
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)Ejemplo de solicitud
{
"avg_r": 142,
"avg_g": 128,
"avg_b": 110,
"shift_kelvin": 1200
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.color_temperature_adjust",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
min_shift_kelvin | -10000 |
max_shift_kelvin | 10000 |
min_temperature_kelvin | 1000 |
max_temperature_kelvin | 40000 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |