我遇到一个问题,我必须动态设置有关背景图像亮度的字体颜色。
例如,如果背景图片很暗,我会将字体颜色设置为白色'
是否有任何工具可以使用React-Native来提供图像的亮度?
答案 0 :(得分:0)
这似乎是How to access image pixel data in react-native
中提到的类似问题第1步
标记的答案显示了一个解决方案,它创建了一个本机(android)函数,它返回一个对象,其中包含一个填充了每个像素颜色的数组(宽度,高度,hasAlpha和像素)。
第2步 我不是平面设计师,所以如果这是正确的,我不是100%确定,但听起来不错。正如问题Image Dark/Light Detection Client Sided Script 中所提到的,JavaScript提供了一种功能,可以将每种颜色转换为灰度,然后返回平均像素。我实际上并不知道react-native是否提供了这个功能 - 尝试它然后我会改变这一步的答案。
步骤2.1 - 转换为灰度 我的理解就是这么简单: * Indigo Color Example正如您在颜色细节中看到的那样,您有3个不同的部分 - R(81)G(43)B(219) *为每个像素添加这三个,并将它们除以3 * 81 + 43 + 219 = 343/3 = 114,3 - > 114 =灰度
步骤2.2 - 将所有灰度加在一起并除以总和 您的所有像素都应该能够转换成灰度。在那里,你可以将它们加在一起并将其除以你得到的像素量
第3步 我最可疑的一点是你可能要亲自尝试一下。我会说如果0是最小值(暗),255是最大值(白色),中间127是你决定颜色是暗还是白的
深色或浅色的示例
127是我们决定变暗或变亮的地方
Misty Rose graycolor = 236 = light
Indigo Color Example graycolor = 114 = dark
#46bfb0 graycolor = 145 = light
Misty Rose 4 graycolor = 129 = light
#72632f graycolor = 87 = dark
我的这个简短的实验向我展示了如果你看到#46bfb0它可能是黑暗而不是光线,那么127线可能并不完美 - 所以测试它并请用这个项目来表达你的解决方案。