Hoy les mostrare que con lo que e publicado se puede hacer una aplicación puede que para algunos les sirva o no, en la universidad nunca falta el maestro que le gusta jugar con las imágenes y leer los valores RGB de una imagen, si nos vamos a los clásicos libros de procesamiento de imágenes una imagen lo miran como una matriz.
Cita:
Si suponemos que la imagen es una matriz donde la dimensión dependerá del tamaño de nuestra imagen, supongamos el icono de android que nos carga por default al crear un proyecto es de 24x24 eso quiere decir que nuestra matriz tiene una dimensión de 24x24 [URL="http://es.wikipedia.org/wiki/Matriz"]http://es.wikipedia.org/wiki/Matriz[/URL]
Pero ademas tiene 3 dimensiones mas por los valores de cada valor RGB eso nos convierte una matriz de 24x24x3. Muchos valores verdad
La ventaja de android es que podemos leer todo el valor del pixel y así poder sacar los 3 valores RGB de la imagen ademas de tener el Alpha entonces tendríamos el ARGB de cada pixel.
Para este proyecto que le titularemos "Sacar el RGB del pixel donde nosotros hagamos Touch" algo largo nop . Utilizaremos las cosas que e ido publicando poco a poco.
Primero miremos como cargar una imagen en mi caso voy a utilizar la siguiente:
Razón simple, para saber si lo que estamos leyendo del RGB sea correcto, un ejemplo si hago Touch en la parte del color rojo debería tener valores de R= 255 G= 0 B= 0. Bueno primero debemos saber como desplegar esta figura para eso debemos guardarla en la siguiente dirección res/drawable-mdpi
Ademas vamos agregar el texto que vamos a desplegar en este caso seria el pixel que estamos haciendo Touch y el valor RGB, nos vamos a nuestro archivo main.xml y agregamos lo siguiente:
Cita:
Corremos nuestro proyecto para ver que todo va bien por el momento . Y ahora nos falta agregar la imagen que vamos a buscar su RGB, para eso agregamos de nuevo modo en nuestro main.xml lo siguiente:<TextView
android:id="@+id/Pixel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Pixel= "
/>
<TextView
android:id="@+id/RGB"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
android:id="@+id/Pixel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Pixel= "
/>
<TextView
android:id="@+id/RGB"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
Cita:
Por el momento solo nos carga el icono pequeño de android pero en el código en nuestro .java agregaremos la otra imagen que les mencione. Ahora la pregunta del millón como madres vamos a sacar el valor ARGB de la imagen dependiendo del pixe. Les ayudare un poco para eso usamos la siguiente función:<ImageView
android:src="@drawable/icon"
android:layout_width="wrap_content"
android:id="@+id/test_image"
android:layout_height="wrap_content"
android:layout_weight="1"></ImageView>
android:src="@drawable/icon"
android:layout_width="wrap_content"
android:id="@+id/test_image"
android:layout_height="wrap_content"
android:layout_weight="1"></ImageView>
Cita:
Tarde unos días para poder encontrar la ecuación que cumpliera bien jeje y pidiéndole favor a mi novia que viera los valores en Corel. En este caso solo ando leyendo el valor en el pixel 10,10 de nuestra matriz para hacer pruebas ustedes tienen que modificarse para que puedan leer dependiendo la ubicación donde hicimos Touch, vayan a [URL="http://www.forosdelweb.com/f165/veamos-las-coordenadas-932269/"]http://www.forosdelweb.com/f165/veamos-las-coordenadas-932269/[/URL] Ahí explico como sacar el Touch de la pantalla entera deben de buscarle ustedes el modo para solo leer donde va a ir la imagen es cuestión de pensarle un rato.public int[] RGBreturn(Bitmap x)
{
int pix = x.getPixel(10, 10);
int h[] = new int [4];
h[3] = (pix>>24)&0xFF;
h[0] = (pix>>16)&0xFF;
h[1] = (pix>>8)&0xFF;
h[2] = pix&0xFF;
return h;
}
{
int pix = x.getPixel(10, 10);
int h[] = new int [4];
h[3] = (pix>>24)&0xFF;
h[0] = (pix>>16)&0xFF;
h[1] = (pix>>8)&0xFF;
h[2] = pix&0xFF;
return h;
}
Bueno hasta el momento esto es lo que llevo:
Cita:
Como dije para las pruebas ando utilizando el pixel 10,10; aquí esta la imagen de prueba de que vamos por buen camino.Bitmap bMap;
ImageView image;
TextView text;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bMap = BitmapFactory.decodeResource(getResources(), R.drawable.test);
image = (ImageView)findViewById(R.id.test_image);
text = (TextView)findViewById(R.id.RGB);
image.setImageBitmap(bMap);
int pix = bMap.getPixel(10, 10);
int h[] = RGBreturn(pix);
text.setText("A= "+Integer.toString(h[3])+" R= "+Integer.toString(h[0])+" G= "+Integer.toString(h[1])+" B= "+Integer.toString(h[2]));
}
ImageView image;
TextView text;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
bMap = BitmapFactory.decodeResource(getResources(), R.drawable.test);
image = (ImageView)findViewById(R.id.test_image);
text = (TextView)findViewById(R.id.RGB);
image.setImageBitmap(bMap);
int pix = bMap.getPixel(10, 10);
int h[] = RGBreturn(pix);
text.setText("A= "+Integer.toString(h[3])+" R= "+Integer.toString(h[0])+" G= "+Integer.toString(h[1])+" B= "+Integer.toString(h[2]));
}
Y pues ya puliendo unos detalles con los temas que cree anteriormente llegue hasta esto.
Hice Touch en la parte donde sabia el valor que les comente al inicio donde es rojo, ya probé con varias imágenes diferentes y tengo buenos resultados.
COMENTEN O PREGUNTEN SI TIENEN DUDAS CON QUE PONGAN "COMO HICISTE EN ESTE PARTE" CON ESO BASTA
Pues bueno gente nos vemos me iré a otro foro haber que sucede se cuidan bye