我正在制作一个react原生应用程序,并试图使用它们的十六进制码将两种或多种颜色混合在一起,然后得到结果的颜色和它的十六进制码。
例如,在每种颜色具有相同比例的情况下,混合颜色:#4285F4 + #EA4335 + #FBBC05 = #SomeColorHexcode
。是否有算法可以用来获得结果颜色的十六进制码?
我看了一些旧文章,似乎有一个解决方案:Mixing two colors "naturally" in javascript。但是这篇文章中的主要解决方案似乎使用了jquery,react native不支持jquery。此外,这个问题是在7年前提出的,我想知道现在是否有更好的算法用于混合颜色。
谢谢你,谢谢
3条答案
按热度按时间zbsbpyhn1#
原则
1.你把颜色值
1.你把CSS颜色值转换成整数
1.你取每个RGB值的中间
个字符
exec
的解释如下:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec短码,多种颜色
的字符串
一行程序的解释
它包含了所有的颜色:
型
对于每个元素,我们采用CSS颜色代码,并将RGB值分开:
型
对于其中的每个元素,我们将每个十六进制数转换为整数:
型
我们只取RGB三元组:
型
然后我们对所有RGB数组求和:
型
我们将每个RGB求和值除以颜色总数:
型
我们将每个值转换回十六进制:
型
当只有一个数字时,不要忘记添加“0”:
型
我们将RGB数组转换为字符串:
型
我们把“#”放在前面:
型
这就是你的调色机。
igsr9ssn2#
我相信这段代码产生的结果与前面的答案相同,但希望它更清楚地说明它是如何工作的。
字符串
jdzmm42g3#
我喜欢@GirkovArpa的答案,但没有必要去cmyk着色,它不支持混合#000000。这里有一个函数,它混合了两个六进制,并且可以选择接受混合比。
对于JavaScript,删除类型注解
字符串
使用方法:
型