Ajuste el contraste de un color por factor
Aleje los canales de un color del gris medio 128 para darle más fuerza, o acérquelos para suavizarlo: #3366cc con un factor de 1.5 pasa a #0d59f2. Un factor de 1 no cambia nada. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Color
- #3366cc
- Factor
- 1,5
- Gris medio
- 128
- Hex
- #0d59f2
- Resistencia (Ω)
- 13
- G
- 89
El contraste alrededor del gris medio es el gesto clásico de imagen que estira o comprime cada canal rojo, verde y azul alejándolo del punto medio de ocho bits ciento veintiocho, en lugar de deslizar la luminosidad HSL o elevar una potencia gamma. Diseñadores, autores de tokens e ingenieros gráficos usan un factor de contraste cuando quieren muestras más vivas o más planas sin girar la rueda de matiz ni tratar el color como una fotografía completa. Esta herramienta acepta un color hex CSS y un factor finito en el intervalo cerrado de cero a diez, aplica la regla por canal de que la salida es el gris medio más la distancia con signo desde ese gris multiplicada por el factor, recorta cada canal al rango legal de cero a doscientos cincuenta y cinco y devuelve el hex ajustado y los enteros RGB. Un factor de uno deja la muestra intacta; un factor de cero colapsa todos los canales al gris medio; valores por encima de uno aumentan el contraste y pueden recortar luces o sombras.
Qué hace el contraste alrededor del gris medio en los canales RGB
Comience con un color hex CSS como hash tres tres seis seis c c o la forma corta hash tres seis c. El analizador expande códigos de tres dígitos, pasa los dígitos a minúsculas y convierte cada par en enteros rojo, verde y azul de cero a doscientos cincuenta y cinco. El gris medio en esa escala de ocho bits es ciento veintiocho: el pivote entero que usan los deslizadores clásicos de contraste en programas de pintura y canalizaciones raster.
Cada canal se reescribe con aritmética ordinaria: reste el gris medio, multiplique por el factor de contraste, vuelva a sumar el gris medio, redondee al entero más cercano y recorte a la caja legal de cero a doscientos cincuenta y cinco. Los canales que ya están en el gris medio no se mueven para ningún factor finito, porque su distancia con signo es cero.
Los canales más oscuros que el gris medio se alejan de él cuando el factor es mayor que uno y se acercan cuando el factor está entre cero y uno. Los canales más claros que el gris medio hacen lo mismo en sentido contrario. Un factor exactamente igual a uno es identidad: cada canal redondeado coincide con la entrada.
Un factor de cero aplana la muestra al gris medio en los tres canales, que es el código hex ocho cero ocho cero ocho cero. Los factores grandes recortan: un rojo oscuro puede llegar a cero y un azul claro a doscientos cincuenta y cinco, y esos extremos recortados se quedan en los muros legales en lugar de envolver.
El mismo factor se aplica de forma independiente a rojo, verde y azul, de modo que el equilibrio relativo de canales puede cambiar respecto a una historia de contraste HSL que congela el matiz. Esa diferencia es intencionada: este contrato es el estiramiento lineal alrededor del gris medio, no un deslizador perceptual ni una razón WCAG entre dos colores. Se rechazan formas hex con alfa de cuatro u ocho dígitos porque el contrato es solo RGB opaco.
Contrato de entrada, forma de la respuesta y validación
Envíe dos campos: color como cadena hex y factor como número finito de cero a diez inclusive. Cada muestra incluye role, hex, enteros r g b y una cadena rgb imprimible. Los campos de nivel superior hex, r, g y b reflejan el resultado ajustado por contraste para clientes de una sola línea.
Una cadena formula breve documenta la regla del gris medio por canal para documentación y soporte. Comprobaciones típicas: aplicar el factor uno punto cinco a un azul medio, aplicar el factor cero punto cinco para aplanar un rojo saturado hacia el gris, confirmar que el factor uno devuelve el hex original, confirmar que el factor cero produce gris medio y rechazar el factor quince o un color ausente.
Conecte el formulario gratuito del navegador para vistas previas rápidas y llame al mismo contrato desde scripts cuando necesite generación masiva de tokens o comprobaciones de integración continua. Mantenga el factor dentro del intervalo documentado en lugar de confiar en recortes silenciosos del propio multiplicador: esta herramienta falla de forma explícita ante un factor inválido para que los sistemas de diseño y las canalizaciones de renderizado sigan siendo predecibles en todos los entornos.
Dónde aporta valor un factor de contraste en gris medio
Los equipos de marca y producto suelen conservar un solo hex protagonista y necesitan un compañero más vivo o más discreto sin abrir un editor de imagen completo ni inventar a ojo un segundo color de marca. Los autores de tokens de diseño generan rampas de contraste barriendo un factor sobre una muestra base cuando el aclarado u oscurecido HSL resulta demasiado pastel y la gamma demasiado ligada a la pantalla.
Las herramientas de presentación y marketing producen variantes de campaña a partir de un logotipo saturado: suba el factor para un cartel, bájelo para una pastilla de fondo apagada. Los autores de material didáctico sobre imagen pueden mostrar que estirar RGB alrededor del gris medio no es lo mismo que cambiar la luminosidad HSL, ni una curva de potencia gamma, ni medir el contraste WCAG entre dos colores.
Si más adelante necesita comparar dos códigos hex por accesibilidad, aplicar un exponente gamma, aclarar u oscurecer en HSL o filtrar una fotografía entera, trátelos como intenciones de búsqueda y aterrizajes separados en lugar de sobrecargar esta página del factor en gris medio.
Qué puede hacer con ella
Intensificar un hex de marca sin cambiar el matiz
Eleve un solo color de logotipo alrededor del gris medio y capture el hex resultante para carteles, estados hover y revisiones de diseño.
Rampas de tokens apagadas desde una muestra
Barra el factor por debajo de uno para aplanar los medios tonos hacia el gris conservando las mismas proporciones RGB, en lugar de deslizar la luminosidad HSL.
Preguntas frecuentes
¿Cómo cambia el factor de contraste su color hex?
Cada canal RGB c se convierte en clamp(round(128 + (c − 128) × factor), 0, 255). El gris medio permanece fijo; los canales más oscuros y más claros se alejan de 128 si el factor es mayor que 1 y se acercan a 128 si es menor que 1.
¿Qué intervalo de factor se admite?
El factor debe ser un número finito en [0, 10].
¿Qué formatos hex se aceptan?
Hex CSS de tres y seis dígitos, con o sin hash inicial. Se rechazan formas con alfa (#rgba / #rrggbbaa) y caracteres no hex.
¿Cuánto cuesta ajustar el contraste de un color?
La herramienta del navegador es gratuita y se ejecuta en local.
¿Qué hacen los factores 0 y 1?
Un factor de 1 deja el color exactamente igual. Un factor de 0 lleva todos los canales al gris medio, así que cualquier color pasa a #808080. Por encima de 1 se gana contraste; entre 0 y 1 se suaviza.
Herramientas relacionadas
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/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)Ejemplo de solicitud
{
"color": "#3366cc",
"factor": 1.5
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.contrast_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.
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. |
Notas técnicas
Cadenas hex inválidas y factores fuera del rango permitido fallan con un error invalid_input claro, no con un recorte silencioso.
Contrato de entrada, forma de la respuesta y validación
Color también acepta los alias hex y base; factor acepta contrast y amount. Campos ausentes, caracteres no hex, longitudes incorrectas, NaN, Infinity, factores negativos y valores por encima de diez fallan con invalid_input y no se cobran. En caso de éxito la respuesta devuelve el color de seis dígitos normalizado y el factor numérico, informa mid_gray como ciento veintiocho y ofrece las muestras original y result. El precio de las llamadas API correctas es la base publicada de $0.002 por elemento; los fallos de validación no consumen saldo prepago.
Dónde aporta valor un factor de contraste en gris medio
Como esta capacidad es un motor parse puro, el precio de la API es la base publicada de $0.002 por elemento correcto y la validación fallida no consume saldo.
Casos de integración
Comprobaciones golden de CI del contraste del tema
Compruebe que los tokens de producción siguen coincidiendo con el estiramiento esperado alrededor del gris medio tras editar la paleta, sin abrir un editor de imagen.
Preguntas técnicas
¿Qué ocurre con factor = 1 y factor = 0?
El factor 1 es identidad: ningún canal cambia, de modo que el hex resultante coincide con el hex de entrada normalizado. El factor 0 colapsa todos los canales al gris medio 128, que es #808080.