¿Qué es un canal alfa?

Un canal alfa almacena la transparencia de cada píxel por separado de los canales de color de una imagen. Sus valores representan una cobertura totalmente transparente, totalmente opaca o parcialmente transparente.

Cómo funcionan los canales alfa

Un valor alfa registra qué tan opaco es un píxel. En PNG, cero significa totalmente transparente y el valor máximo de muestra significa totalmente opaco; los valores intermedios indican una cobertura parcial, como la de un borde suave. Un compositor mezcla cada píxel del primer plano con lo que haya detrás en proporción al alfa. El color que acompaña al alfa puede almacenarse de dos formas. El alfa directo, también llamado no premultiplicado o no asociado, mantiene el color completo junto a su valor alfa. El alfa premultiplicado, o asociado, almacena el color ya multiplicado por alfa, lo que simplifica la fórmula de composición. En el ejemplo del estándar HTML, el amarillo semitransparente es 255, 255, 0, 127 con alfa directo y 127, 127, 0, 127 con alfa premultiplicado. Los archivos PNG almacenan alfa directo, los mapas de bits de salida del canvas 2D de HTML usan alfa premultiplicado y TIFF puede contener cualquiera de los dos con una etiqueta que indica cuál. El software debe saber qué forma está leyendo, y la conversión entre ambas produce pérdidas en los píxeles que no son totalmente opacos.

Datos clave

  1. ¿Qué ocurre cuando se confunden el alfa directo y el premultiplicado? Los bordes suaves cambian de color. Al componer datos premultiplicados como si tuvieran alfa directo, su color se multiplica por alfa una segunda vez, por lo que los bordes parcialmente transparentes se oscurecen. Los datos con alfa directo tratados como premultiplicados se suman con toda su intensidad, por lo que los bordes se ven demasiado brillantes. Los píxeles totalmente opacos son idénticos en ambas formas, de ahí que el error aparezca como un halo alrededor de los recortes y no en las áreas sólidas. Las herramientas que aceptan ambas formas ofrecen un ajuste: el filtro overlay de FFmpeg, por ejemplo, tiene una opción alpha con los valores straight, premultiplied y auto.
  2. ¿Por qué aparece un halo en un recorte después de cambiar su tamaño? Con alfa directo, un píxel totalmente transparente sigue almacenando un color, y un filtro que promedia cada canal por separado mezcla ese color oculto con los píxeles vecinos del borde. La solución habitual es premultiplicar, cambiar el tamaño y luego volver a la forma original. No todas las herramientas lo hacen por ti: libvips documenta que su operación de cambio de tamaño no premultiplica el alfa e indica a quienes la invocan que lo hagan primero.
  3. ¿Qué formatos de imagen fija conservan el alfa? PNG almacena un canal alfa completo en sus tipos de color verdadero con alfa y de escala de grises con alfa; en los demás casos, puede asignar a cada entrada de la paleta su propio valor alfa o marcar un único color como totalmente transparente. WebP puede almacenar alfa tanto en archivos sin pérdida como con pérdida; los archivos con pérdida necesitan la estructura de archivo extendida. GIF no tiene canal alfa: se puede marcar como transparente un índice de la paleta, por lo que cada píxel se dibuja o se omite. JPEG no tiene canal alfa, y los conversores difieren en lo que sustituye a la transparencia. Algunos componen la imagen sobre un color de fondo. Otros solo eliminan el canal alfa, lo que deja el color que almacenaban los píxeles transparentes: la documentación de ImageMagick describe su salida JPEG como equivalente a -alpha off, y los fondos transparentes suelen volverse negros. Para obtener un resultado predecible, compón la imagen sobre un fondo que elijas antes del encoding. Los valores predeterminados de esa operación también varían: flatten de sharp, por ejemplo, usa negro de forma predeterminada.
  4. ¿La extensión de un archivo de video indica si tiene alfa? No. El alfa depende del códec y de su perfil. Entre los códecs Apple ProRes, solo ProRes 4444 y ProRes 4444 XQ admiten un canal alfa, por lo que dos archivos con la misma extensión pueden diferir. VP8 y VP9 pueden contener alfa, pero MDN señala que Safari no admite transparencia alfa en ninguno de los dos. También puede ser necesario indicar al codificador que lo escriba: el codificador prores_ks de FFmpeg tiene una opción alpha_bits cuyo valor 0 desactiva el plano alfa.

Cuándo importan los canales alfa

Conserva el alfa al componer logotipos, recortes, superposiciones o animaciones transparentes sobre otro contenido. Un códec o formato que no admita alfa descartará la transparencia o requerirá un fondo elegido.

Cómo ayuda Transloadit con los canales alfa

El Robot /image/resize de Transloadit cambia a blanco el fondo de las imágenes transparentes de forma predeterminada; su documentación indica que se debe establecer background en none para conservar la transparencia. El parámetro format de salida debe seguir especificando un formato que pueda almacenar alfa. El parámetro alpha del Robot controla el canal directamente, y solicitar has_transparency mediante output_meta informa si una imagen contiene partes transparentes, lo que ayuda a elegir un formato de salida para cada archivo. El Robot /image/bgremove elimina fondos y escribe PNG de forma predeterminada.

Estas dos páginas no indican si el cambio de tamaño usa alfa directo o premultiplicado. Si la calidad de los bordes importa, cambia el tamaño de un recorte con bordes suaves, colócalo sobre un fondo de contraste e inspecciona el resultado antes de procesar una colección completa.

Explora las capacidades de Transloadit para imágenes

Fuentes

Convierte tus conocimientos sobre multimedia en un pipeline funcional

Conecta las subidas, el procesamiento, la IA, el almacenamiento y la entrega mediante una sola API declarativa, mientras nos encargamos por ti del stack de encoding, el escalado y los cambios constantes de formatos.

Prueba Transloadit gratis