Image 我如何知道图像是否为;预乘阿尔法;?

Image 我如何知道图像是否为;预乘阿尔法;?,image,opengl,image-processing,opencv,png,Image,Opengl,Image Processing,Opencv,Png,我听说在进行图层混合等操作时只需要预乘alpha。我如何知道我的原始图像是否是预乘alpha?你不能 唯一可以检查的是它是否不是预乘的。要执行此操作,请检查所有像素,并查看是否存在比alpha允许的值更高的颜色值if(max(max(col.r,col.g,col.b)>255*alpha)//not premul。任何其他情况都是模棱两可的,可以或不可以预乘。你最好的猜测可能是假设它们不是,因为大多数PNG都是这样 编辑:事实上,甚至我发布的代码都不起作用,因为有很多PNG带有白色蒙版,因此图

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

你不能

唯一可以检查的是它是否不是预乘的。要执行此操作,请检查所有像素,并查看是否存在比alpha允许的值更高的颜色值
if(max(max(col.r,col.g,col.b)>255*alpha)//not premul
。任何其他情况都是模棱两可的,可以或不可以预乘。你最好的猜测可能是假设它们不是,因为大多数PNG都是这样


编辑:事实上,甚至我发布的代码都不起作用,因为有很多PNG带有白色蒙版,因此图像必须包含alpha为
0
的部分,以首先确定蒙版颜色。

Android
位图
存储从PNG加载的带有预乘alpha的图像。你不能以通常的方式从中得到非预乘的原色


为了在不预乘RGB通道的情况下加载图像,我必须使用第三方
PNGDecoder
从这里开始:

实际上所有png都不是预乘的。资料来源:第12.8节,@MarkRansom不幸的是,并非所有工具都符合此规范。@clamp如果这些工具生成PNG输出,则这些工具存在漏洞。该规范规定PNG文件不能具有预乘alpha。所有带有由Xcode创建的alpha通道的PNG图像,包括在iOS应用程序中,都使用预乘像素值。@MarkRansom:你错了
80808000
在预乘RGBA中是一个有效的有意义的值,它表示一个加法像素,这就是说预乘比直乘更一般的意义。在PNG中使用这种约定的软件通常是按照约定在内部进行的,没有人说这种PNG必须是可互操作的,所以你看不到规范。尽管有些人可能会编写一些专有的元数据块来表示这一点。