我有一张来自google的色轮图片,现在我想找到一种方法来计算色轮中任何rgb颜色的x和y坐标。
如果这有点让人困惑,我会尽量解释得更好一点:
我有一张色轮的图片-就像你在paint.net中选择颜色一样。我也有一种颜色的形式的rgb值。现在我想得到图片的x和y坐标,正是这个颜色。
不过,我不知道怎么做。我正试图在一个由麻省理工学院应用程序发明者2创建的应用程序中使用这个,这限制了我的能力。所以最好的办法就是用数学方法解决。
我希望这里有人能帮我。
编辑:这是我正在使用的图片。我其实一直想把这个放在这里,但忘了…
android - 将RGB值转换为色轮坐标-LMLPHP

最佳答案

我在iOS应用程序using CIFilter中尝试实现一个颜色选择器,并且不得不解决同样的问题。
我发现给定颜色映射的hsv值与该色轮非常吻合:
hue是车轮周围的角度。0或1是0或2PI弧度,0.75是π/2,0.5是π等。基本上它从1到0绕着顺时针方向从右开始。
saturation是从圆的中心到边缘的距离,以半径的百分比表示。中间0,边缘1。
value是颜色的暗度(inputValue在我链接到上面的文章中)。
因此,给定huesaturation对于给定颜色,请参见此psuedocode:

float pickerWidth = myPickerImage.size.width;
float radius = pickerWidth / 2;
float colorRadius = saturation * radius;
float angle = (1 - hue) * (2 * pi);
float midX = myPicker.size.width / 2; //midpoint of the circle
float midY = myPicker.size.height / 2;
float xOffset = cos(angle) * colorRadius; //offset from the midpoint of the circle
float yOffset = sin(angle) * colorRadius;
Point colorPoint = new Point(midX + xOffset, midY + yOffset);

value参数将用于实现黑暗滑块。
你需要把rgb转换成hsv-UIColor会自动帮我完成,但我打赌在android上也有办法。

09-16 21:48