Aplique un filtro sepia a píxeles RGB de imagen
El rojo puro, 255, 0, 0, se convierte en el marrón cálido 100, 89, 69 con la matriz sepia estándar, y cada canal se redondea y se mantiene entre 0 y 255. Introduzca valores RGB y recíbalos en sepia en el mismo orden. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Aplique un filtro sepia a píxeles de imagen ya decodificados sin cargar un archivo ni depender de un códec. Envíe una matriz ordenada de muestras RGB y reciba las muestras correspondientes en tonos marrones cálidos, calculadas con la matriz de transformación sepia estándar. Cada canal resultante se redondea y se limita al intervalo válido de cero a 255. La validación completa evita que píxeles incompletos o incorrectos alteren el resultado de forma silenciosa, y el procesamiento determinista permite usar el conversor en producción, pruebas del navegador, formación y tests automatizados exactos.
Prepare muestras completas de píxeles RGB
Coloque los píxeles decodificados en el campo samples como una matriz no vacía de objetos. Cada objeto debe contener los canales r, g y b, y cada canal debe ser un valor numérico finito entre cero y 255, ambos incluidos. Aunque lo habitual son enteros, se admiten fracciones porque algunos flujos de imagen generan muestras intermedias de coma flotante antes de codificarlas.
El conversor verifica cada registro y nunca interpreta un componente ausente como cero. Este criterio estricto protege la estructura de la imagen: omitir un registro desplazaría todos los píxeles posteriores, mientras que sustituir un valor inventaría información de color. Mantenga el orden del ráster, ya que la salida conserva exactamente el orden de entrada.
Para imágenes mayores, divida el ráster en bloques de tamaño fijo y vuelva a unir las respuestas en el mismo orden. La capacidad trabaja con muestras RGB, no con bytes PNG, JPEG, AVIF o WebP. Decodifique primero el archivo y conserve aparte la anchura, altura, orientación, paso de fila y canal alfa.
Comprenda la transformación sepia estándar
Cada píxel de salida procede de tres sumas ponderadas. El rojo se calcula como 0.393 por r más 0.769 por g más 0.189 por b. El verde usa 0.349 por r más 0.686 por g más 0.168 por b.
El azul emplea 0.272 por r más 0.534 por g más 0.131 por b. Esta conocida matriz sepia modifica tanto la luminancia como el equilibrio de canales, crea luces dominadas por rojos y verdes cálidos y reduce el azul. El conversor redondea cada suma al entero más próximo y luego la limita al intervalo inclusivo de cero a 255.
La limitación es necesaria porque las filas de la matriz pueden producir valores superiores a 255 en píxeles claros. Sin ella, un búfer de bytes posterior podría desbordarse, rechazar el valor o mostrar otro color. La respuesta incluye la matriz, las muestras transformadas y el recuento para que registros y pruebas indiquen exactamente qué transformación se utilizó.
El proceso es puro y determinista: no usa red, modelos, azar, hora actual, perfiles de color ocultos ni caché mutable. No linealiza RGB con gamma, interpreta perfiles ICC, simula película química, añade grano, conserva transparencia ni mezcla la salida con el original.
Integre y verifique el resultado convertido
Interprete la matriz samples devuelta como sustitución posicional de la matriz RGB enviada. El campo count debe coincidir con el número de registros de entrada; compárelo antes de reconstruir una tesela, línea, miniatura, búfer de lienzo o ráster completo. Si la imagen original tiene transparencia, conserve sus valores alfa en un búfer paralelo y restáurelos al codificar, porque este contrato solo transforma rojo, verde y azul.
Un buen conjunto de regresión incluye negro, blanco, gris neutro, rojo puro, verde puro, azul puro, una muestra fraccionaria y un registro incompleto que deba fallar. El blanco brillante comprueba que los tres resultados se limitan a 255. Los colores puros revelan cambios accidentales de coeficientes u orden, y los neutros muestran la separación cálida característica.
Trate los errores de validación como problemas de decodificación o construcción de la solicitud, no como fallos transitorios que deban reintentarse sin cambios. Corrija los canales ausentes, valores fuera de rango o NaN antes de reenviar.
Qué puede hacer con ella
Cree búferes de imagen sepia
Transforme píxeles RGB decodificados en muestras sepia cálidas y después restaure las dimensiones originales para codificar el resultado.
Prepare referencias exactas para pruebas
Genere valores esperados deterministas para probar código de lienzo, bibliotecas de imagen y flujos de conversión de píxeles.
Preguntas frecuentes
¿Qué matriz sepia se utiliza?
El conversor usa las filas [0.393, 0.769, 0.189], [0.349, 0.686, 0.168] y [0.272, 0.534, 0.131] para obtener rojo, verde y azul.
¿Qué ocurre si un canal transformado supera 255?
Cada resultado ponderado se redondea al entero más cercano y se limita al intervalo inclusivo de cero a 255.
¿Acepta archivos codificados o conserva alfa?
No. Solo acepta registros RGB decodificados. Conserve alfa y las dimensiones aparte, y después codifique las muestras devueltas.
¿En qué color se convierte el blanco puro en sepia?
Se convierte en 255, 255, 239, un crema cálido. Las sumas del rojo y del verde superan 255 y se quedan en el máximo, mientras el azul baja un poco: eso da a las luces del sepia su calidez.
¿Qué pasa si a un píxel le falta uno de sus canales?
La conversión entera se detiene e indica la posición y el canal que falta. Saltarse ese píxel desplazaría todos los siguientes, y rellenar un valor inventaría un color que usted nunca indicó.
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/sepia-convert \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"samples":[{"r":255,"g":0,"b":0},{"r":30,"g":120,"b":220}]}'const res = await fetch("https://api.kit.forhosting.com/image/sepia-convert", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"samples": [
{
"r": 255,
"g": 0,
"b": 0
},
{
"r": 30,
"g": 120,
"b": 220
}
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/image/sepia-convert",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"samples": [
{
"r": 255,
"g": 0,
"b": 0
},
{
"r": 30,
"g": 120,
"b": 220
}
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/image/sepia-convert", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"samples":[{"r":255,"g":0,"b":0},{"r":30,"g":120,"b":220}]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"samples":[{"r":255,"g":0,"b":0},{"r":30,"g":120,"b":220}]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/image/sepia-convert", 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
{
"samples": [
{
"r": 255,
"g": 0,
"b": 0
},
{
"r": 30,
"g": 120,
"b": 220
}
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "image.sepia_convert",
"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_samples | 100000 |
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
Prepare muestras completas de píxeles RGB
Si, por ejemplo, la muestra 4 carece de b, toda la solicitud falla con un error invalid_input que señala ese índice basado en cero y el canal ausente. Se aceptan hasta cien mil registros por solicitud.
Integre y verifique el resultado convertido
El ejecutor del navegador y la API utilizan la misma función solve, lo que permite revisar unos píxeles representativos antes de automatizar un trabajo mayor. La ejecución en el navegador es gratuita y cada solicitud de API cuesta $0.002.
Casos de integración
Examine colores representativos
Compruebe una paleta pequeña en el navegador antes de ejecutar la misma matriz mediante un flujo de API automatizado.
Preguntas técnicas
¿Qué ocurre si falta un canal en una muestra?
La solicitud falla con invalid_input e identifica el índice basado en cero y el canal r, g o b que falta.
¿Cuánto cuesta una solicitud de API?
Cada solicitud de API cuesta $0.002. También puede ejecutar gratuitamente la misma conversión determinista en el navegador.