第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > rgba通道转rgb_image – 将RGBA颜色转换为RGB

rgba通道转rgb_image – 将RGBA颜色转换为RGB

时间:2019-01-16 06:01:27

相关推荐

rgba通道转rgb_image – 将RGBA颜色转换为RGB

我已经考虑了约翰内斯的答案,因为他是对的。

*有人提出几点意见,我原来的答案是不正确的。如果alpha值从正常反转,它工作。然而,根据定义,这在大多数情况下不起作用。因此,我更新了下面的公式正确的正常情况。这最终等于@ hkurabko的回答下面*

然而,更具体的答案是将α值结合到基于不透明背景颜色(或者其所指的“哑光”)的实际颜色结果中。

有一个算法(从this维基百科的链接):

>规范化RGBA值,使它们都在0和1之间 – 只需将每个值除以255即可。我们将调用结果源。

>标准化也是无光泽的颜色(黑色,白色无论什么)。我们将调用结果BGColor注意 – 如果背景颜色也是透明的,那么你将不得不递归首先的过程(同样,选择一个遮罩),以获得此操作的源RGB。

>现在,转换被定义为(在这里完整的伪代码!):

Source => Target = (BGColor + Source) =

Target.R = ((1 - Source.A) * BGColor.R) + (Source.A * Source.R)

Target.G = ((1 - Source.A) * BGColor.G) + (Source.A * Source.G)

Target.B = ((1 - Source.A) * BGColor.B) + (Source.A * Source.B)

要获取Target的最终0-255值,您只需将所有规范化值乘以255,如果任何组合值超过1.0,则确保上限为255(这是过度曝光,有更复杂的算法处理这涉及整个图像处理等)。

编辑:在你的问题,你说你想要一个白色背景 – 在这种情况下只是将BGColor固定为255,255,255。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。