假设我给函数一个简单的蓝色。然后它应该返回深蓝色和浅蓝色的十六进制代码或 RGB。我在 Java/android 中工作
问问题
1259 次
1 回答
3
一个好的方法是将其转换为HSL 颜色空间,调整“亮度”分量,然后转换回 RGB。
我发现有两页提到了您可能使用的公式,或者您可以尝试用谷歌搜索 java 解决方案。
另一种选择是使用YUV 颜色空间,计算更容易。
在 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
)
(来源)
于 2013-08-02T21:50:31.507 回答