如何知道调色板png是否带有alpha?
我获得了有关图片png_get_IHDR
之后我会看color_type - PNG_COLOR_TYPE_PALETTE
但是我找不到如何知道这个png图像是否有alpha通道。
答案 0 :(得分:12)
PNG以两种(或三种)完全不同的方式支持透明度:
具有分离的 Alpha通道(RGBA或GA)的真彩色或灰度图像
(可选)tRNS chunk中的透明度额外信息。它有两种不同的风格:
2a上。对于索引图像:tRNS块指定一个,几个或所有调色板索引的透明度值(“alpha”)。
2B。对于真彩色或灰度图像:tRNS块指定单个颜色值(RGB或灰色),应视为完全透明。
如果您对案例 2a 感兴趣,并且如果您使用的是libpng,则应该查看函数png_get_tRNS()
答案 1 :(得分:3)
这可能有所帮助:
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;
}