React-Native:如何获得背景图像亮度

时间:2018-05-17 09:13:10

标签: react-native

我遇到一个问题,我必须动态设置有关背景图像亮度的字体颜色。

例如,如果背景图片很暗,我会将字体颜色设置为白色'

是否有任何工具可以使用React-Native来提供图像的亮度?

1 个答案:

答案 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是我们决定变暗或变亮的地方

我的这个简短的实验向我展示了如果你看到#46bfb0它可能是黑暗而不是光线,那么127线可能并不完美 - 所以测试它并请用这个项目来表达你的解决方案。