我听说在进行图层混合等时只需要预乘alpha。我怎么知道我的原始图像是否是预乘alpha?
答案 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