image – 将RGBA颜色转换为RGB

前端之家收集整理的这篇文章主要介绍了image – 将RGBA颜色转换为RGB前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何将RGBA颜色元组(96,96,96,202)转换为相应的RGB颜色元组?

编辑:

我想要的是获得一个RGB值,这是最相似的RGBA元组视觉上在白色背景上。

解决方法

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

*有人提出几点意见,我原来的答案是不正确的。如果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。

猜你在找的CSS相关文章