我试图在Android java中将RGB颜色转换为HSV。我查找了API文档,发现有一个内置功能可以做到这一点,但我似乎无法让它实际工作。 Android Studio不承认它存在(显示红色,没有自动完成),因此不会参考它来编译程序。我已经包含了将语句导入android.graphics.*
。
API参考是here
我试过的代码如下:
//First attempt
Color test = new Color();
test.RGBtoHSV(rgbcolor, hsvreturn);
//Second attempt
android.graphics.Color.RGBtoHSV(rgbcolor, hsvreturn);
//Third attempt
Color.RGBtoHSB(rgbcolor, hsvreturn);
答案 0 :(得分:0)
看起来您的方法签名错误。
应该是:
RGBToHSV(int red, int green, int blue, float[] hsv)
除非你是在追求这个?
colorToHSV(int color, float[] hsv)
请参阅:http://developer.android.com/reference/android/graphics/Color.html#colorToHSV(int,%20float[])
请注意,这两种方法都是静态的
在我的Android Studio中,两者都可以正常工作。
答案 1 :(得分:0)
使用此功能的正确方法是:
int rgb = 0xFF0000; //red
//Same but different
//int rgb = Color.RED;
float[] hsv = new float[3];
Color.RGBToHSV(Color.red(rgb), Color.green(rgb), Color.blue(rgb), hsv);
另一种(更好的)方法是使用colorToHSV:
int rgb = 0xFF0000; //red
float[] hsv = new float[3];
Color.colorToHSV(rgb, hsv);
我建议你下次阅读API参考资料;)
评论后更新:
我发现了一些你需要改变的事情:
您的班级没有近距离。
像你这样的代码语句需要在函数或构造函数中。
缺少进口。
这将是您要寻找的代码:
import android.graphics.Color;
public class LibraryClass {
public static void yourFunction() {
int rgb = Color.RED;
// This also works
// int rgb = 0xFF0000;
float[] hsv = new float[3];
Color.colorToHSV(rgb, hsv);
}
}