Как получить пиксельный цвет в Android?

Я использую Intent для вызова и отображения изображения из галереи, и теперь я включил его, чтобы получить координаты изображения в TextView, используя следующие:

final TextView textView = (TextView)findViewById(R.id.textView); final TextView textViewCol = (TextView)findViewById(R.id.textViewColor); targetImage.setOnTouchListener(new ImageView.OnTouchListener(){ @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub int x=0; int y=0; textView.setText("Touch coordinates : " + String.valueOf(event.getX()) + "x" + String.valueOf(event.getY())); ImageView imageView = ((ImageView)v); Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap(); int pixel = bitmap.getPixel(x,y); int redValue = Color.red(pixel); int blueValue = Color.blue(pixel); int greenValue = Color.green(pixel); if(pixel == Color.RED){ textViewCol.setText("It is RED"); } /*if(redValue == 255){ if(blueValue == 0) if(greenValue==0) textViewCol.setText("It is Red"); }*/ return true; } }); 

Теперь мне нужно сделать это; Чтобы получить colour (RGB value) точных координат, которые пользователь выбирает, а затем назначить их #FF0000 , #00FF00 и #0000FF но на данный момент, пожалуйста, помогите получить цвет пикселей на основе того, что у меня есть.

Приветствия.

Вы можете получить пиксель из представления следующим образом:

 ImageView imageView = ((ImageView)v); Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap(); int pixel = bitmap.getPixel(x,y); 

Теперь вы можете получить каждый канал:

 int redValue = Color.red(pixel); int blueValue = Color.blue(pixel); int greenValue = Color.green(pixel); 

Функции Color возвращают значение в каждом канале. Итак, все, что вам нужно сделать, это проверить, равен ли красный номер 255, а зеленый и синий – 0, чем установить текст textView в «красный». Просто обратите внимание, что говоря, что что-то красное не просто, что красный канал больше нуля. Конечно, Cos 255-Green и 255-Red – желтый. Вы также можете сравнить пиксель с другим цветом. например:

 if(pixel == Color.MAGENTA){ textView.setText("It is Magenta"); } 

Надеюсь, поможет.

Вы можете изменить это для своего требования. Этот фрагмент поможет вам получить пиксельный цвет.

 public static int getDominantColor(Bitmap bitmap) { Bitmap newBitmap = Bitmap.createScaledBitmap(bitmap, 1, 1, true); final int color = newBitmap.getPixel(0, 0); newBitmap.recycle(); return color; }