使用当前RGB值和亮度计算新的RGB值

2024-04-27 17:56:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我的目标是读出我的设备的当前RGB值(这部分工作),并用亮度值计算新的RGB值。亮度值通过mqtt提供,介于0和255之间,RGB值的范围也在0到255之间。目前,我没有得到可用的RGB值,比如100023等等\N 我的代码使用回调,每个回调都是为多个设备设置的。我有一个带有if语句的回调,它检查负载并执行每种情况,如state = 0color = [245, 0, 30] 我的第一个想法是通过将0到255的范围映射到0到100的范围,并将每个RGb值与fac相乘,来计算一个名为fac的值,但这会产生无法使用的输出。在当前的代码中,我添加了一些数学来获得可用的值,但是我在其中有一些想法错误 一些最小代码:

 elif 'brightness' in payload: #brightness changed
            print(f"brightness changed: {payload['brightness']}")
            color = {}
            led_info = sdk.get_led_positions_by_device_index(device_index)
            current_color = sdk.get_led_colors_by_device_index(device_index, list(led_info))
            current_color2 = tuple(current_color.values())
            print(f"nwo current color is: {current_color2}")
            current_color3 = current_color2[1]
            print(type(current_color3))
            print(current_color3)
            fac = payload['brightness']
            print(fac)
            color['r'] = math.floor(current_color3[0] / fac)
            color['g'] = math.floor(current_color3[1] / fac)   
            color['b'] = math.floor(current_color3[2] / fac)
            set_all_device_leds(device_index, color)
            state_payload["state"] = "ON"
            state_payload["brightness"] = payload["brightness"]
            state_payload["color"] = color
            print(state_payload["color"])

要查看我的完整源代码(如果需要),请访问github链接:https://github.com/Tenn0/iCue2sACN/blob/67ab0a52eeb127d98c768228f7015326323a4a1c/src/main.py (函数位于第177行)


Tags: 代码indexleddevicemathrgbcurrentcolor