Cómo obtener el color del pixel en Android?
Estoy usando Intent para llamar y mostrar una imagen de Gallery, y ahora he hecho que me permita obtener las coordenadas de la imagen en un TextView usando estos:
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; } });
Ahora lo que tengo que hacer es; Para obtener el colour (RGB value)
de las coordenadas exactas que el usuario selecciona y posteriormente asignar cada una a #FF0000
, #00FF00
y #0000FF
#00FF00
pero por ahora, por favor ayude a obtener el color de Pixel basado en lo que tengo.
Aclamaciones.
Puede obtener el píxel de la vista de esta manera:
ImageView imageView = ((ImageView)v); Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap(); int pixel = bitmap.getPixel(x,y);
Ahora puede obtener cada canal con:
int redValue = Color.red(pixel); int blueValue = Color.blue(pixel); int greenValue = Color.green(pixel);
Las funciones Color devuelven el valor en cada canal. Así que todo lo que tienes que hacer es comprobar si el rojo es 255 y el verde y el azul son 0, que establecer el textView texto a "es rojo". Sólo preste atención que decir que algo es rojo no es simplemente que el canal rojo es el mayor de cero. 'Cos 255-Green y 255-Red es amarillo, por supuesto. También puede comparar el píxel con un color diferente. por ejemplo:
if(pixel == Color.MAGENTA){ textView.setText("It is Magenta"); }
Espero eso ayude.
Usted puede modificar esto para su requisito. Este fragmento te ayudará a obtener el color del píxel.
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; }