android 从 rgb 转换为 hsv,反之亦然

标签 android colors rgb hsv

有人可以解释为什么从 rgb 到 hsv 的转换在从 hsv 转换回 rgb 时没有给出相同的结果吗?

int color = Color.rgb(206, 43, 55);

int red = Color.red(color);
int green = Color.green(color);
int blue = Color.blue(color);
System.out.println(red + ", " + green + ", " + blue);
//prints: 206, 43, 55 (as expected)

float[] hsv = new float[3];
Color.RGBToHSV(red, green, blue, hsv);

float hue = hsv[0];
float sat = hsv[1];
float val = hsv[2];

int outputColor = Color.HSVToColor(hsv);
red = Color.red(outputColor);
green = Color.green(outputColor);
blue = Color.blue(outputColor);
System.out.println(red + ", " + green + ", " + blue);

//prints: 206, 42, 54 (green and blue are changed)

最佳答案

终于找到了解决办法。 android.graphics.Color.RGBToHSV 的 android 实现中似乎有一个奇怪的近似值。 近似值恰好是此实现中从 0° 到 360° 的色调。

我找到了 java.awt.Color.RGBtoHSB 的代码,其中 HUE 从 0.0f 变为 1.0f,转换效果很好。所以不是浮点精度错误而是实现错误,事实上通过乘以 Hue * 360f 我得到了正确的 HSV Hue 值。

关于android 从 rgb 转换为 hsv,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28058277/

相关文章:

android - 下载内容时管理网络更改

android - 无法解析 : com. android.support :appcompat-v7:28. 0.3

没有 JNI 的 C++ 中的 Android "hello world"应用程序

java - 如何在 Alert Dialog Builder 中将文本居中?

java - 将图像转换为颜色数组

c - 图像处理 - 亮度和对比度

html - SSI 菜单链接需要颜色更改 : CSS or HTML?

r - 带填充和组的 ggplot2

python - 使用 numpy 和 pil 将 565(16bit-color) 转换为 888(24bit-color)

java - Bufferedimage 设置 RGB 不起作用 - JAVA