-2

假设我给函数一个简单的蓝色。然后它应该返回深蓝色和浅蓝色的十六进制代码或 RGB。我在 Java/android 中工作

4

1 回答 1

3

一个好的方法是将其转换为HSL 颜色空间,调整“亮度”分量,然后转换回 RGB。

我发现有两页提到了您可能使用的公式,或者您可以尝试用谷歌搜索 java 解决方案。

RGB 转 HSL

HSL 转 RGB


另一种选择是使用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 回答