android色温值转成rgb

色温值

色温是屏幕的一个重要参数,‌通常按照某个特定的白点去调整,‌标准一般有6500K(D65)和9000K(D90)两种‌。‌色温值的高低会影响屏幕的色彩表现,‌高于6500K表示屏幕色彩偏冷(‌冷屏)‌,‌低于6500K表示屏幕色彩偏暖(‌暖屏)‌。‌对色温的喜好与所处的地理环境和瞳孔颜色有关,‌因此,‌选择何种色温值主要取决于个人喜好,‌以看着舒服为宜‌

安卓色温值转成rgb

借鉴网上其他语言的代码写的kotlin代码, 返回的是rgb整数值,如果要返回Color可自行修改,里面有红,绿,蓝,三色值。 色温转rgb,rgb再转色温,没找到严格的转换公式,可能精度上有差异。
网上不同的转换方法,得出来的值都不一样,能不能用,请自行思量。

class ColorUtil {
    companion object {
        /**
         * 色温值转成rgb整数值
         *
         * @param temperature
         * @return
         */
        fun temperatureToRgb(temperature: Int): Int {
            var tempera:Double = temperature.toDouble()
            if (tempera < 1000) {
                tempera = 1000.0
            }
            if (tempera > 40000) {
                tempera = 40000.0
            }
            tempera = (tempera / 100.0F)
            var red = 0.0
            if (tempera <= 66) {
                red = 255.0
            } else {
                red = tempera - 60
                red = 329.698727446 * Math.pow(red, -0.1332047592)

                if (red.compareTo(0.0) < 0) {
                    red = 0.0
                } else if (red > 255.0) {
                    red = 255.0
                }
            }
            var green = 0.0
            if (tempera <= 66) {
                green = tempera
                green = 99.4708025861 * Math.log(green) - 161.1195681661
                if (green < 0) {
                    green = 0.0
                }
                if (green > 255) {
                    green = 255.0
                }
            } else {
                green = tempera - 60
                green = 288.1221695283 * Math.pow(green, -0.0755148492)
                if (green < 0) {
                    green = 0.0
                }
                if (green > 255) {
                    green = 255.0
                }
            }
            var blue = 0.0
            if (tempera >= 66) {
                blue = 255.0
            } else {
                if (tempera <= 19) {
                    blue = 0.0
                } else {
                    blue = tempera - 10
                    blue = 138.5177312231 * Math.log(blue) - 305.0447927307
                    if (blue < 0) {
                        blue = 0.0
                    }
                    if (blue > 255) {
                        blue = 255.0
                    }
                }
            }
            /**
             * rgb中的red, green,blue必须转为int, 不能是浮点,否则值差异非常大
             * 另外还要把右移8位,且符号位要置为0,比如(255, 186, 129)转成hex得到ffffba81, 我们需要的是ffba81
             */
            val intValue = Color.rgb(red.toInt(), green.toInt(), blue.toInt()) and(0xffffff)
            return intValue
        }

    }

}

色温对眼睛的影响

视觉舒适度

  1. 低色温:色温较低时,光线偏黄、偏暖。在这种光线下,眼睛会感觉比较放松,就像处于温馨的室内环境中。但如果长时间处于低色温环境且光线较暗,眼睛可能会因视物不够清晰而过度调节,容易引起疲劳。
  2. 高色温:高色温的光线偏蓝、偏冷,能提供较高的亮度和清晰度,在白天或需要集中注意力的场景下,能让眼睛更敏锐地感知物体细节。然而,长时间处于高色温环境中,尤其是在夜间,眼睛可能会受到较强光线的刺激,产生不适感,如干涩、刺痛等。

睡眠质量

  1. 低色温:晚上使用低色温的灯光,有助于促进褪黑素的分泌。褪黑素是一种由人体脑内松果体腺分泌的胺类激素,能帮助调节睡眠 - 觉醒周期,让人感到困倦,更容易进入睡眠状态,从而提高睡眠质量。
  2. 高色温:高色温的光线会抑制褪黑素的分泌,使大脑保持清醒状态。如果在睡前长时间暴露在高色温光下,可能会导致入睡困难,影响睡眠质量,长期下去还可能打乱生物钟,对眼睛和身体健康都产生不利影响。

眼部健康

  1. 低色温:如果低色温光线过暗,眼睛为了看清物体,会不断调整瞳孔大小和晶状体焦距,长期处于这种状态,容易导致眼睛疲劳、干涩,甚至可能引发近视、散光等问题。
  2. 高色温:长期暴露在高色温、高强度的光线下,可能会对眼睛的视网膜造成损伤。例如,蓝光属于高色温光线,过量的蓝光照射可能会引起视网膜色素上皮细胞的损伤,进而影响视网膜的正常功能,增加黄斑病变等眼部疾病的发病风险。

为保护眼睛健康,应根据不同的场景和时间选择合适的色温。例如,在白天或需要集中精力工作学习时,可使用较高色温的光线;而在晚上或休息时,应选择低色温的柔和光线。

作者:帅得不敢出门

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅得不敢出门

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值