我怎么知道图像是否是“预乘Alpha”?

时间:2012-02-05 08:34:31

标签: image opengl image-processing opencv png

我听说在进行图层混合等时只需要预乘alpha。我怎么知道我的原始图像是否是预乘alpha?

2 个答案:

答案 0 :(得分:7)

你不能。

你唯一可以检查的是它是不是预先乘法的。要做到这一点,请查看所有像素,看看是否有一个颜色值的值高于alpha允许if(max(col.r,col.g,col.b) > 255*alpha)//not premul的值。任何其他情况都不明确,可以或不可以预乘。你最好的猜测可能是假设它们不像大多数PNG那样。

编辑:实际上,即使我发布的代码也不会起作用,因为有很多带有白色遮罩的PNG,因此图像必须包含具有0 alpha的部分来确定首先是哑光色。

答案 1 :(得分:3)

Android Bitmap存储从PNG加载的带有预乘alpha的图像。您不能以通常的方式从中获取非预乘的原始颜色。

为了加载没有 RGB 频道的图像,我必须使用第三方PNGDecoder来自http://twl.l33tlabs.org/#downloads