Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Java colores

Buenas...ahí alguna manera de hacer que java detecte de manera automática los colores de la pantalla es decir utilizando la clase Robot que mueva el mouse hasta el color que yo le indique por ejemplo que mueva el mouse hacia donde este el color negro y el de manera automática busque el negro y ponga el mouse sobre el...nose si me explique bien de antemano muchas gracias por la respuesta :)

agosto 15, 2013 | Registered Commentertriblack

No probé y no tengo ganas de abrir el Eclipse para probar jajajaj, pero se me ocurre algo asi como hacer un array de colores y luego, cuando el puntero del mouse esté sobre alguna posicion de la pantalla, asignarle una funcion que al hacer un onMouse no me acuerdo cual era el que pasabas por encima de algo y se activaba, y esa funcion que haga una comparacion del getColor (en hexadecimal) sobre el que esta posicionado, y luego compararlo con cada uno de los colores del array cargado de colores, luego bastará con hacer lo que quieras con ese color.

agosto 15, 2013 | Unregistered CommenterYo

Buenas amigo el evento al que te refieres es el mouse entered y mouse exited... pero lo que quiero hacer es que saque los colores sin tener que pasarle el mouse por encima es decir de manera automática ^^

agosto 16, 2013 | Registered Commentertriblack

AHHHHH, bueno asi mas imposible todavia la veo jaja, porque suponte que tenes un fondo con degradados, que codigo podria llegar a obtenerte los miles de millones de colores en hexadecimal... lo unico que se me ocurre es poder captar los colores, si son exactos como RED BLACK WHITE YELLOW, y que esten sectorizados en paneles... si estan en una pantalla sin nada todos juntos, lo veo imposible, ni con coordenadas xy seria posible (es posible, pero seria un metodo medio loco, que por cada pixel que encuentre que tome el color hexadecimal y lo guarde, imaginate lo que seria eso)

agosto 17, 2013 | Unregistered CommenterYo

Buenas,

Yo la única posibilidad que veo es que captures la pantalla y recorras en memoria la matriz de píxeles hasta encontrar un color coincidente. Una vez localizado, solo quedaría mover el puntero a las coordenadas correspondientes.

Un saludo

agosto 18, 2013 | Unregistered CommenterUnoPorAhi

Si al final are lo de sacar captura a la pantalla con el metodo rectangle... Gracias por sus respuesta :)

Otra cosa que quera preguntar ( de la cual si no tengo idea alguna xD ) como se hace para minimizar y maximizar una aplicación echa en java con el teclado ? por ejemplo cuando le den 'R' se comienza a ejecutar y se minimiza y mientras se este ejecutando y este minimizada si le dan 'S' se detenga y se maximice ?

agosto 19, 2013 | Registered Commentertriblack

Guenas.

Con java podrías capturar el evento keyPressed, pero solo funciona si la aplicación tiene el foco. No creo que sea esto lo que tu deseas.

Un saludo,
Paposo

agosto 19, 2013 | Unregistered CommenterPaposo

Buenas,

Efectivamente la JVM solo te permite capturar el teclado cuando la app tiene el foco.
La unica forma de conseguirlo seria capturando nativamente (en c, por ejemplo) los eventos del SO y enlazarlos con tu app java mediante JNI. Yo lo veo complejo...

De cualquier forma son un poco 'curiosos' los requisitos de tu aplicacion no? Porque minimizar cuando ejecuta y parar cuando se muestra?

Un saludo

agosto 19, 2013 | Unregistered CommenterUnoPorAhi

Anda mira, tienes suerte. Ya hay una libreria que lo hace:

https://code.google.com/p/jnativehook/


Un saludo,

agosto 19, 2013 | Unregistered CommenterUnoPorAhi

Coño!

A triblack no se si le interesa, pero a mi si :)

Gracias

agosto 19, 2013 | Unregistered CommenterPaposo

Paposo

Buenas si eso fue lo primero que intente jaja y funciona hasta la parte de minimizarlo xD

UnoPorAhi

Buenas lo que quiero hacer es un programa algo parecido al "Mouse recorder" pero no lo quiero limitar a una cierta cantidad de intentos, si no que cuando uno desee lo pueda detener y para eso necesito detenerlo con una tecla y este se encontrara minimizado

agosto 19, 2013 | Registered Commentertriblack

Ok, pues lo dicho, con esa libreria entiendo que podrias hacer lo que comentas de minimizar. Aqui tienes unos ejemplos de uso: https://code.google.com/p/jnativehook/wiki/examples

Ese software lo vas a hacer open source? Si es asi, cuando lo termines si cuelgas el proyecto avisanos para echarle un vistazo, porque parece interesante.

@Paposo me alegro de que te sirva :-)

Un saludo

agosto 20, 2013 | Unregistered CommenterUnoPorAhi

UnoPorAhi pff gracias amigo es lo que necesitaba ^^ ... y sobre el código si claro aunque aun sigo con el problema que tenia antes sobre captar los colores de la imagen, el metodo del Rectangle con el bufer me funciono pero es algo lento ya que es una imagen 800 * 600 y tarda mucho en recorrerla pixel por pixel

agosto 21, 2013 | Registered Commentertriblack

Bueno, es normal que la operation lleve tiempo...

Lo que si he visto es que usar getRaster es mucho mas rapido (hasta 16 veces) que getRGB a la hora de recorrer lo pixeles:

http://stackoverflow.com/questions/6524196/java-get-pixel-array-from-image

Con que metodo lo estas haciendo?

Un saludo

agosto 21, 2013 | Unregistered CommenterUnoPorAhi

Buenas amigo estaba utilizando el getRGB ya me he puesto a ver lo del getRaster pero ahi algo que no entiendo del codigo

argb += -16777216; // 255 alpha
argb += ((int) pixels[pixel] & 0xff); // blue
argb += (((int) pixels[pixel + 1] & 0xff) << 8); // green
argb += (((int) pixels[pixel + 2] & 0xff) << 16); // red

eso lo mete en la matriz pero si muestras la matriz el numero que da no es una combinación de color ya que los da en negativos

agosto 21, 2013 | Registered Commentertriblack