Libpng, paleta png con alfa o no?

¿Cómo saber si palette png está con alfa o no? Obtengo información sobre la imagen png_get_IHDR

Después de eso miro color_type - PNG_COLOR_TYPE_PALETTE

Pero no puedo encontrar cómo saber si esta imagen png tiene canal alfa o no.

PNG admite la transparencia de dos (o tres) maneras bastante diferentes:

  1. Truecolor o imágenes en escala de grises con un canal alfa separado (RGBA o GA)

  2. Información adicional de transparencia en el fragmento tRNS (opcional). Que tiene dos sabores diferentes:

    2a. Para imágenes indexadas: el fragmento tRNS especifica un valor de transparencia (“alfa”) para uno, varios o todos los índices de la paleta .

    2b. Para imágenes en color verdadero o en escala de grises: el fragmento tRNS especifica un único valor de color (RGB o gris) que debe considerarse como totalmente transparente.

Si está interesado en el caso 2a , y si está utilizando libpng, debería ver la función png_get_tRNS ()

esto puede ayudar:

 if (color_type == PNG_COLOR_TYPE_RGBA || color_type == PNG_COLOR_TYPE_GA) *alphaFlag = true; else { png_bytep trans_alpha = NULL; int num_trans = 0; png_color_16p trans_color = NULL; png_get_tRNS(png_ptr, info_ptr, &trans_alpha, &num_trans, &trans_color); if (trans_alpha != NULL) *alphaFlag = true; else *alphaFlag = false; }