2015-02-24 3 views
0

Я хочу преобразовать цвета пикселов RGB в HSV. Я успешно извлек красный, зеленый и синий цвета растрового изображения. Как я могу преобразовать это значение 3 для значения HSV?Как конвертировать RGB в HSV?

Фрагмент моего кода (который retrive цвет 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 к ВПГ, но моя программа разбился. Что мне делать?

ответ

0

Обратите внимание, что hsv представляет собой массив с плавающей точкой, а метод setTextColor() ожидает параметр int.

После того, как у вас есть массив HSV вы можете преобразовать его в Int цвета с помощью этого:

Color.HSVToColor(hsv); 

этот метод возвращает значение INT вашего цвета.

Однако, если все вы хотите преобразовать эти значения RGB для цвета вы можете пропустить шаг HSV и использовать

Color.rgb(colorRed, colorGreen, colorBlue); 

И что будет возвращать Int значение цвета