Reemplazar un color específico en una imagen
Cambie el rojo por verde en una lista de píxeles: con una tolerancia de 32 cambian el rojo puro y los dos casi rojos, así que se sustituyen 3 de 5 píxeles. Cada canal se compara por separado y así se atrapan las sombras del borde. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Píxeles
- #FF0000, #FF2020, #00FF00, #0000FF, #FE0101
- Objetivo
- #FF0000
- Tolerancia
- 32
- Reemplazo
- #00FF00
- Píxeles
- #00FF00, #00FF00, #00FF00, #0000FF, #00FF00
- Cantidad reemplazada
- 3
- Total de elementos
- 5
Un píxel se considera coincidencia cuando sus canales rojo, verde y azul difieren del objetivo como máximo en la tolerancia indicada: con cero solo se reemplazan coincidencias exactas, y con un valor mayor se cubren los sombreados y el suavizado de los bordes. Es la versión determinista y sin conexión de un repintado con varita mágica: sin decodificar imágenes, sin IA, solo una regla clara de distancia por canal que puede reproducir en cualquier parte.
Qué significa reemplazar un color con tolerancia
Las imágenes reales casi nunca contienen un solo color plano. Un logotipo rojo está rodeado por un halo de píxeles rosados de suavizado, y la fotografía de un coche rojo contiene decenas de rojos según la luz. Si solo cambiara el valor hexadecimal exacto, el resultado quedaría irregular y poco profesional.
La tolerancia lo soluciona definiendo un vecindario alrededor del objetivo: esta herramienta mide, para cada píxel, la mayor diferencia absoluta entre los canales rojo, verde y azul, y reemplaza el píxel cuando esa distancia es menor o igual que su tolerancia. Una tolerancia de 0 es igualdad estricta, útil para iconos, sprites y gráficos planos de interfaz. Los valores entre 16 y 48 son el rango habitual para degradados y fotos.
Cómo elegir el objetivo, la tolerancia y el reemplazo
Empiece muestreando el color que quiere eliminar. El objetivo acepta un valor hexadecimal estándar #RRGGBB; si no está seguro del valor exacto, una herramienta de color dominante o de paleta le dirá de qué está hecha realmente la imagen. Después ajuste la tolerancia subiendo desde cero: ejecute con 0, compruebe cuántos píxeles se reemplazaron y aumente hasta cubrir el halo alrededor del sujeto sin invadir los elementos vecinos.
El reemplazo también es un color hexadecimal, escrito tal cual en cada píxel coincidente: no hay mezcla, así que el cambio es nítido. Una salvaguarda que conviene conocer: la tolerancia debe ser cero o un entero positivo hasta 255.
Dónde encaja en un flujo de trabajo real
La entrada y la salida son listas de colores de píxeles, no archivos de imagen codificados, lo que convierte esta capacidad en una pieza de construcción y no en un editor fotográfico completo. Quienes la usan suelen extraer los píxeles de un recurso pequeño —un favicon, una serie de gráfico, un sprite de juego, un marcador tipo QR—, los repintan aquí y reensamblan la imagen por su lado. Los equipos de marketing la usan para generar variantes de color de un solo render maestro.
Las canalizaciones de gráficos la usan para cambiar el color de una serie sin volver a renderizar. Las herramientas de accesibilidad la usan para llevar colores problemáticos a otros conformes.
Qué puede hacer con ella
Repintar variantes de producto
Cambie el color principal de un render de producto para generar todas las combinaciones desde un único recurso maestro, con la tolerancia cubriendo el sombreado de los bordes.
Actualizar el tema de un gráfico o sprite
Lleve un color de la paleta antigua al nuevo color de marca en cada píxel de un gráfico pequeño sin abrir un editor.
Corregir un color por accesibilidad
Reemplace un color de marca no conforme por su equivalente accesible en iconos y gráficos de interfaz antes de publicar.
Preguntas frecuentes
¿Cuánto cuesta?
También puede ejecutarlo gratis en su navegador en esta página.
¿Cómo se decide una coincidencia?
Un píxel coincide cuando la mayor diferencia por canal (rojo, verde o azul) frente al color objetivo es menor o igual que la tolerancia. Con tolerancia 0 solo se reemplazan coincidencias exactas.
¿Qué ocurre si la tolerancia es negativa?
Una tolerancia negativa no tiene sentido y suele indicar un fallo en el código que llama.
¿Acepta un archivo de imagen?
No. Opera sobre los colores de los píxeles de la imagen, dados como una lista de colores hexadecimales #RRGGBB, y devuelve la lista ya repintada. Usted decodifica y reensambla la imagen por su lado.
¿Qué tolerancia conviene usar?
Use 0 para iconos, sprites y gráficos planos, y entre 16 y 48 para degradados y fotos. Empiece en cero, mire cuántos píxeles cambiaron y súbala hasta cubrir el halo sin invadir los colores vecinos.
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/image/color-replace \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"pixels":["#FF0000","#FF2020","#00FF00","#0000FF"],"target":"#FF0000","replacement":"#00FF00"}'const res = await fetch("https://api.kit.forhosting.com/image/color-replace", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"pixels": [
"#FF0000",
"#FF2020",
"#00FF00",
"#0000FF"
],
"target": "#FF0000",
"replacement": "#00FF00"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/color-replace",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"pixels": [
"#FF0000",
"#FF2020",
"#00FF00",
"#0000FF"
],
"target": "#FF0000",
"replacement": "#00FF00"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/color-replace", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"pixels":["#FF0000","#FF2020","#00FF00","#0000FF"],"target":"#FF0000","replacement":"#00FF00"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"pixels":["#FF0000","#FF2020","#00FF00","#0000FF"],"target":"#FF0000","replacement":"#00FF00"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/color-replace", 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
{
"pixels": [
"#FF0000",
"#FF2020",
"#00FF00",
"#0000FF"
],
"target": "#FF0000",
"replacement": "#00FF00"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.color_replace",
"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
max_pixels | 262144 |
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
La API de reemplazo de color toma los colores de los píxeles de una imagen, un color objetivo, una tolerancia y un color de reemplazo, y devuelve la lista de píxeles con cada píxel coincidente ya cambiado.
Qué significa reemplazar un color con tolerancia
Al ser una simple comparación numérica, la misma entrada produce siempre la misma salida: puede probar en el navegador y luego automatizar la misma llamada por la API con resultados idénticos, justo lo que necesita cuando el repintado alimenta una canalización de compilación o un generador de variantes.
Cómo elegir el objetivo, la tolerancia y el reemplazo
Una tolerancia negativa se rechaza con un error invalid_input en lugar de truncarse en silencio, porque un radio negativo no tiene sentido y suele indicar un fallo en el código que la llama, que usted preferirá ver de inmediato antes que depurar después una imagen sutilmente incorrecta.
Dónde encaja en un flujo de trabajo real
Toda la operación es tan barata que puede ejecutarse gratis en su navegador en esta página, y cuesta $0.002 por solicitud a través de la API cuando la automatiza. No se sube ni se guarda ningún archivo, el cálculo es totalmente determinista y el límite de 262144 píxeles por llamada cubre sprites e iconos con holgura.
Preguntas técnicas
¿El resultado es determinista?
Sí. La regla es una simple comparación de distancia por canal, sin aleatoriedad, así que la misma entrada produce siempre la misma salida en el navegador y a través de la API.
¿Hay un límite de tamaño?
Hasta 262144 píxeles por llamada, lo que cubre con holgura iconos, sprites y recursos pequeños.