如何将RGB转换为HSV?

时间:2015-02-24 19:43:24

标签: android text colors textview hsv

我想将RGB像素颜色转换为HSV。我成功地重新获得了位图的红色,绿色和蓝色。如何将此3值转换为HSV值?

我的代码细节(用于检索RGB颜色):

 public View.OnTouchListener ivOnTouchListener = new View.OnTouchListener() {
    public boolean onTouch(View v, MotionEvent event) {

        Drawable imgDrawable = ((ImageView) iv).getDrawable();
        Bitmap bitmap = ((BitmapDrawable) imgDrawable).getBitmap();

        int coord_x = 0;
        int coord_y = 0;

        while (coord_x <= 1) {
            while (coord_y <= 1) {
                int touchedRGB = bitmap.getPixel(coord_x, coord_y);
                int colorRed = Color.red(touchedRGB);
                int colorGreen = Color.green(touchedRGB);
                int colorBlue = Color.blue(touchedRGB);
                float[] hsv = new float[3];
                /*IT'S WORK, I GET THE RGB COLORS -> colorRGB.append(" || " + "In x: " + coord_x + "and y: " + coord_y + " --> RED: " + colorRed + " GREEN: " + colorGreen + " BLUE: " + colorBlue + " || ");
                coord_y++;*/
                Color.RGBToHSV(colorRed, colorGreen, colorBlue, hsv);
                    colorRGB.setText("THE NEW COLOR");
                    colorRGB.setTextColor(hsv);
            }
            coord_y = 0;
            coord_x++;
        }
        return true;
    }
};

我尝试将当前的textView文本设置为hsv,但我的程序崩溃了。我该怎么办?

1 个答案:

答案 0 :(得分:0)

请注意,hsv是一个float数组,方法setTextColor()需要一个int作为参数。

获得HSV阵列后,可以使用以下方法将其转换为int颜色:

Color.HSVToColor(hsv);

该方法将返回颜色的int值。

但是,如果你想要的只是将这些RGB值转换为颜色,你可以跳过HSV步骤并使用

Color.rgb(colorRed, colorGreen, colorBlue);

这将返回颜色的int值