Libpng,Palette png是不是带有alpha?
Posted
技术标签:
【中文标题】Libpng,Palette png是不是带有alpha?【英文标题】:Libpng, Palette png with alpha or not?Libpng,Palette png是否带有alpha? 【发布时间】:2012-11-14 05:27:12 【问题描述】:如何知道调色板 png 是否带有 alpha?
我得到关于图像png_get_IHDR
的信息
然后我看color_type - PNG_COLOR_TYPE_PALETTE
但是我不知道如何知道这个 png 图像是否有 alpha 通道。
【问题讨论】:
【参考方案1】:这可能会有所帮助:
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;
【讨论】:
【参考方案2】:PNG 以两种(或三种)完全不同的方式支持透明度:
具有独立 alpha 通道(RGBA 或 GA)的真彩色或灰度图像
(可选)tRNS chunk 中的透明度额外信息。有两种不同的口味:
2a。对于索引图像:tRNS 块为一个、几个或所有调色板索引指定一个透明度值(“alpha”)。
2b。对于真彩色或灰度图像:tRNS 块指定应被视为完全透明的单一颜色值(RGB 或灰色)。
如果你对case 2a感兴趣,并且如果你正在使用libpng,你应该看看函数png_get_tRNS()
【讨论】:
以上是关于Libpng,Palette png是不是带有alpha?的主要内容,如果未能解决你的问题,请参考以下文章
使用 libpng 编写 1 位深度的灰度 PNG 会导致图像不正确
No Delegate set : lost message:libpng error: Not a PNG file