Libpng,调色板png与alpha或不?

B.S*_*.S. 5 c++ png libpng

如何知道调色板png是否带有alpha?我得到有关图像的信息png_get_IHDR

之后我看看 color_type - PNG_COLOR_TYPE_PALETTE

但我无法找到如何知道这个png图像是否有alpha通道.

leo*_*loy 13

PNG以两种(或三种)完全不同的方式支持透明度:

  1. 具有分离Alpha通道(RGBA或GA)的真彩色或灰度图像

  2. (可选)tRNS块中的透明度额外信息.它有两种不同的口味:

    2A.对于索引图像:tRNS块指定一个,几个或所有调色板索引的透明度值("alpha").

    2B.对于真彩色或灰度图像:tRNS块指定应被视为完全透明的单个颜色值(RGB或灰色).

如果您对案例2a感兴趣,并且如果您使用的是libpng,则应该查看函数png_get_tRNS()