微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。