Despremultiplicar alfa RGBA y recuperar canales directos
Deshaga el alfa premultiplicado de un píxel: rojo 0,125, verde 0,25 y azul 0,375 con alfa 0,5 vuelven a ser 0,25, 0,5 y 0,75, y el alfa no cambia. Se rechazan el alfa cero y los colores mayores que alfa. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Red
- 0,125
- Verde
- 0,25
- Azul
- 0,375
- Alfa
- 0,5
- Red
- 0,25
- Verde
- 0,5
- Azul
- 0,75
- RGBA
- 0,25, 0,5, 0,75, 0,5
La herramienta para despremultiplicar alfa RGBA recupera los canales directos rojo, verde y azul de un píxel premultiplicado normalizado. Introduzca cuatro canales numéricos entre 0 y 1: la calculadora divide cada componente de color entre alfa y conserva el alfa original. También comprueba que ningún color premultiplicado supere alfa y rechaza alfa cero, caso en el que no puede recuperarse el color de origen. La respuesta determinista incluye canales con nombre y una matriz RGBA ordenada para herramientas gráficas, pruebas, conversores y procesos de imágenes.
Distinga entre alfa premultiplicado y directo
Los datos RGBA pueden representar la transparencia de dos formas habituales. Con alfa directo se guardan los valores originales de rojo, verde y azul independientemente de la opacidad. Con alfa premultiplicado, cada color se almacena después de multiplicarlo por alfa.
Por ejemplo, un rojo directo de 0.8 con alfa 0.5 se guarda como rojo premultiplicado 0.4. Este formato facilita varias operaciones de composición y evita ciertos bordes de color, pero los canales almacenados dejan de expresar directamente el color original. Esta capacidad invierte la operación para un píxel normalizado: divide rojo, verde y azul entre alfa y devuelve alfa sin cambios.
La entrada usa el intervalo de 0 a 1, no bytes de 0 a 255, para conservar una relación fraccionaria explícita. La salida ofrece cada canal recuperado por nombre y también una matriz RGBA en el orden rojo, verde, azul y alfa, apropiada para sistemas que trabajan con posiciones.
Comprenda por qué alfa cero produce un error
La despremultiplicación solo está definida cuando alfa es mayor que cero. Si alfa vale cero, todos los canales correctamente premultiplicados también valen cero, cualquiera que fuera el color directo antes de multiplicar. Por ello, un píxel transparente con rojo 0, verde 0, azul 0 y alfa 0 podría proceder de cualquier color RGB y una división entre cero no puede recuperar una respuesta única.
Devolver negro, conservar los ceros o inventar otro valor parecería determinista, pero atribuiría a la entrada información inexistente. También rechaza números no finitos, canales fuera del intervalo normalizado y cualquier rojo, verde o azul premultiplicado superior a alfa. Esta última regla mantiene la invariancia propia de datos normalizados y evita resultados directos mayores que 1.
Así, los problemas quedan visibles antes de llegar a un renderizador, una textura, un conversor de recursos o una comparación automatizada.
Integre una recuperación determinista de canales
Envíe un píxel mediante los campos rojo, verde, azul y alfa. Los valores 0.125, 0.25, 0.375 y alfa 0.5 producen los canales directos 0.25, 0.5 y 0.75, manteniendo alfa 0.5. No intervienen redondeo, conversión de espacio cromático, corrección gamma, limitación, cuantización a bytes, aleatoriedad, reloj ni formato regional.
Para imágenes completas, incorpore la operación a un proceso acotado por píxeles y confirme siempre que la fuente esté realmente premultiplicada.
Qué puede hacer con ella
Normalizar registros de recursos
Convierta registros RGBA individuales a una representación de alfa directo antes de serializarlos, revisarlos o transformarlos.
Preguntas frecuentes
¿Qué intervalo de canales acepta esta capacidad?
Los cuatro canales deben ser números finitos normalizados entre 0 y 1, y alfa debe ser mayor que cero.
¿Por qué un color premultiplicado no puede superar alfa?
Al multiplicar por alfa un color normalizado no mayor que 1, el resultado nunca supera alfa; una entrada así sería incoherente.
¿Convierte espacios de color o corrige gamma?
No. Solo realiza la despremultiplicación aritmética de los canales numéricos suministrados; convierta el espacio de color por separado.
¿La salida redondea o limita los canales recuperados?
No. Las entradas válidas ya garantizan el intervalo normalizado y cada color resulta de dividir directamente su valor premultiplicado entre alfa.
¿Qué diferencia hay entre alfa directo y alfa premultiplicado?
El alfa directo guarda el color original aparte de la opacidad; el premultiplicado guarda cada color ya multiplicado por alfa. Un rojo directo de 0,8 con alfa 0,5 se guarda premultiplicado como 0,4.
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/unpremultiply \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"red":0.125,"green":0.25,"blue":0.375,"alpha":0.5}'const res = await fetch("https://api.kit.forhosting.com/color/unpremultiply", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"red": 0.125,
"green": 0.25,
"blue": 0.375,
"alpha": 0.5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/unpremultiply",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"red": 0.125,
"green": 0.25,
"blue": 0.375,
"alpha": 0.5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/unpremultiply", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"red":0.125,"green":0.25,"blue":0.375,"alpha":0.5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"red":0.125,"green":0.25,"blue":0.375,"alpha":0.5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/unpremultiply", 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
{
"red": 0.125,
"green": 0.25,
"blue": 0.375,
"alpha": 0.5
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.unpremultiply",
"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
Comprenda por qué alfa cero produce un error
La calculadora responde entonces con `invalid_input`.
Integre una recuperación determinista de canales
Use esta operación cuando una biblioteca de imágenes, una API gráfica, una exportación de lienzo, una cadena de texturas o un recurso serializado entregue canales normalizados premultiplicados y el siguiente sistema espere alfa directo. El cálculo es una división directa conforme a las reglas numéricas de ECMAScript, de modo que una entrada JSON válida e idéntica produce la misma salida en navegador y API. La API cuesta $0.002 por solicitud.
Casos de integración
Convertir resultados de API gráficas
Recupere colores directos normalizados antes de enviar píxeles premultiplicados a una interfaz que espere RGB y alfa independientes.
Verificar cálculos de composición
Compruebe muestras premultiplicadas conocidas en pruebas unitarias y compare los canales recuperados con los valores directos esperados.
Preguntas técnicas
¿Qué sucede cuando alfa vale cero?
La solicitud falla con `invalid_input` porque los datos premultiplicados totalmente transparentes no permiten recuperar un color directo único.