public static float[] getHsl(int[] rgb) {
float[] hsl = new float[3];
float R = rgb[0] / 255.f;
float G = rgb[1] / 255.f;
float B = rgb[2] / 255.f;
float max, min, diff, r_dist, g_dist, b_dist;
max = Math.max(Math.max(R, G), B);
min = Math.min(Math.min(R, G), B);
diff = max - min;
hsl[2] = (max + min) / 2;
if (diff == 0.f) {
hsl[0] = 0.f;
hsl[1] = 0.f;
} else {
if (hsl[2] < 0.5) {
hsl[1] = diff / (max + min);
} else {
hsl[1] = diff / (2 - max - min);
}
r_dist = (max - R) / diff;
g_dist = (max - G) / diff;
b_dist = (max - B) / diff;
if (R == max) {
hsl[0] = b_dist - g_dist;
} else if (G == max) {
hsl[1] = 2 + r_dist - b_dist;
} else if (B == max) {
hsl[2] = 4 + g_dist - r_dist;
}
hsl[0] = hsl[0] * 60;
if (hsl[0] < 0) {
hsl[0] += 360;
}
if (hsl[0] >= 360) {
hsl[0] -= 360;
}
}
return hsl;// colorValue = R + 256 * G + 65536 * B
}
RGB转HSL
最新推荐文章于 2024-05-09 09:04:22 发布