假设我给这个函数一个简单的蓝色。然后它应该返回十六进制代码或RGB为深蓝色和浅蓝色。我在Java / android
工作答案 0 :(得分:3)
一种好方法是将其转换为HSL color space,调整“亮度”组件,然后转换回RGB。
我找到了两个页面,其中提到了您可能使用的公式,或者您可以尝试使用Google解决方案。
<强> RGB to HSL 强>
<强> HSL to RGB 强>
另一种选择是使用YUV color space,计算更容易。
在YUV色彩空间中,您可以通过更改Y值来调整暗度。
RGB到YUV
Y = (0.257 * R) + (0.504 * G) + (0.098 * B) + 16
V = (0.439 * R) - (0.368 * G) - (0.071 * B) + 128
U = -(0.148 * R) - (0.291 * G) + (0.439 * B) + 128
YUV到RGB
B = 1.164(Y - 16) + 2.018(U - 128)
G = 1.164(Y - 16) - 0.813(V - 128) - 0.391(U - 128)
R = 1.164(Y - 16) + 1.596(V - 128)
但是,您必须将'YUV'和'RGB'值钳位到0-255
(尝试value = value & 0xFF
)
(source)