| 
	
		|  Autor | Tema: Java Colores  (Leído 5,213 veces) |  
	|  |  | 
			| 
					
						| 1mpuls0 
								       
								
								 Desconectado 
								Mensajes: 1.186
								
								
								
								
								
								   | 
 
try {             Color color =  robot.getPixelColor(500 , 500);             System.out .println("Red   = " +  color.getRed());            System.out .println("Green = " +  color.getGreen());            System.out .println("Blue  = " +  color.getBlue());             e.printStackTrace();        } 
 Con mouseClicked obtienes las coordenadas donde se hizo clic. Saludos. 
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 abc |  |  |  | 
			| 
					
						| TriBlack 
								
								 Desconectado 
								Mensajes: 12
								
								   | 
 
try {             Color color =  robot.getPixelColor(500 , 500);             System.out .println("Red   = " +  color.getRed());            System.out .println("Green = " +  color.getGreen());            System.out .println("Blue  = " +  color.getBlue());             e.printStackTrace();        } 
 Con mouseClicked obtienes las coordenadas donde se hizo clic. Saludos.Muchas gracias amigo    ... me gustaria hacer otra pregunta y disculpa tantas molestas... Se puede hacer que java detecte en tiempo real los colores y con la clase Robot mueva al mouse a dicho color ? Me explicare mejor xD por ejemplo que de click en todo el color rojo que se consiga en la pantalla pero de manera automatica algo parecido a un bot nose si me entiendes    |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| 1mpuls0 
								       
								
								 Desconectado 
								Mensajes: 1.186
								
								
								
								
								
								   | 
 
Algo así podría servirte. package Intermediate; import java.awt.Color;import java.awt.Robot;import java.awt.AWTException;import java.awt.Rectangle;import java.awt.Toolkit;import java.awt.image.BufferedImage;import java.awt.image.DataBufferByte;import java.io.File;import javax.imageio.ImageIO;import java.io.IOException; public class ClickMouse extends  javax.swing .JFrame {     public static void main(String  args[]) {        try {            BufferedImage bufferedImage =  robot.createScreenCapture( captureSize);            marchThroughImage(bufferedImage);             /*File outputfile = new File("image.jpg");            ImageIO.write(bufferedImage, "jpg", outputfile);*/            e.printStackTrace();        } /*catch (IOException e) {            e.printStackTrace();        }*/    }         int w = image.getWidth();        int h = image.getHeight();        System.out .println("width, height: " +  w + ", " +  h);         for (int i = 0; i < h; i++) {            for (int j = 0; j < w; j++) {                System.out .println("x,y: " +  j + ", " +  i);                int pixel = image.getRGB(j, i);                printPixelARGB(pixel);            }        }    }     public static void printPixelARGB(int pixel) {        int alpha = (pixel >> 24) & 0xff;        int red = (pixel >> 16) & 0xff;        int green = (pixel >> 8) & 0xff;        int blue = (pixel) & 0xff;        System.out .println("argb: " +  alpha + ", " +  red + ", " +  green + ", " +  blue);    } } 
 Lo que hace primero es hacer una captura de pantalla, después la guarda en el buffer y de ahí muestra el rgb de los pixeles. Podrías ajustarlo para guardarlo en un array, además de la posición y después compararlo con el color que definas. Espero que sea algo parecido a lo que necesitas. Saludos. |  
						| 
								|  |  
								|  |  En línea | 
 
 abc |  |  |  | 
			| 
					
						| TriBlack 
								
								 Desconectado 
								Mensajes: 12
								
								   | 
 
Algo así podría servirte. package Intermediate; import java.awt.Color;import java.awt.Robot;import java.awt.AWTException;import java.awt.Rectangle;import java.awt.Toolkit;import java.awt.image.BufferedImage;import java.awt.image.DataBufferByte;import java.io.File;import javax.imageio.ImageIO;import java.io.IOException; public class ClickMouse extends  javax.swing .JFrame {     public static void main(String  args[]) {        try {            BufferedImage bufferedImage =  robot.createScreenCapture( captureSize);            marchThroughImage(bufferedImage);             /*File outputfile = new File("image.jpg");            ImageIO.write(bufferedImage, "jpg", outputfile);*/            e.printStackTrace();        } /*catch (IOException e) {            e.printStackTrace();        }*/    }         int w = image.getWidth();        int h = image.getHeight();        System.out .println("width, height: " +  w + ", " +  h);         for (int i = 0; i < h; i++) {            for (int j = 0; j < w; j++) {                System.out .println("x,y: " +  j + ", " +  i);                int pixel = image.getRGB(j, i);                printPixelARGB(pixel);            }        }    }     public static void printPixelARGB(int pixel) {        int alpha = (pixel >> 24) & 0xff;        int red = (pixel >> 16) & 0xff;        int green = (pixel >> 8) & 0xff;        int blue = (pixel) & 0xff;        System.out .println("argb: " +  alpha + ", " +  red + ", " +  green + ", " +  blue);    } } 
 Lo que hace primero es hacer una captura de pantalla, después la guarda en el buffer y de ahí muestra el rgb de los pixeles. Podrías ajustarlo para guardarlo en un array, además de la posición y después compararlo con el color que definas. Espero que sea algo parecido a lo que necesitas. Saludos.Gracias amigo me ha servido mucho... y si las iré guardando en arrays tanto los colores comos las coordenadas para luego mover el mouse a esa coordenada ^^ de nuevo muchas gracias    |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| TriBlack 
								
								 Desconectado 
								Mensajes: 12
								
								   | 
 
Algo así podría servirte. package Intermediate; import java.awt.Color;import java.awt.Robot;import java.awt.AWTException;import java.awt.Rectangle;import java.awt.Toolkit;import java.awt.image.BufferedImage;import java.awt.image.DataBufferByte;import java.io.File;import javax.imageio.ImageIO;import java.io.IOException; public class ClickMouse extends  javax.swing .JFrame {     public static void main(String  args[]) {        try {            BufferedImage bufferedImage =  robot.createScreenCapture( captureSize);            marchThroughImage(bufferedImage);             /*File outputfile = new File("image.jpg");            ImageIO.write(bufferedImage, "jpg", outputfile);*/            e.printStackTrace();        } /*catch (IOException e) {            e.printStackTrace();        }*/    }         int w = image.getWidth();        int h = image.getHeight();        System.out .println("width, height: " +  w + ", " +  h);         for (int i = 0; i < h; i++) {            for (int j = 0; j < w; j++) {                System.out .println("x,y: " +  j + ", " +  i);                int pixel = image.getRGB(j, i);                printPixelARGB(pixel);            }        }    }     public static void printPixelARGB(int pixel) {        int alpha = (pixel >> 24) & 0xff;        int red = (pixel >> 16) & 0xff;        int green = (pixel >> 8) & 0xff;        int blue = (pixel) & 0xff;        System.out .println("argb: " +  alpha + ", " +  red + ", " +  green + ", " +  blue);    } } 
 Lo que hace primero es hacer una captura de pantalla, después la guarda en el buffer y de ahí muestra el rgb de los pixeles. Podrías ajustarlo para guardarlo en un array, además de la posición y después compararlo con el color que definas. Espero que sea algo parecido a lo que necesitas. Saludos.Buenas amigo... la verdad tu metodo me ha funcionado pero es algo lento :S ya que la imagen es una 800 * 600 y podras imaginar lo que tarde en recorrerla pixel por pixel ¿ No existe otro metodo XD ? |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| 1mpuls0 
								       
								
								 Desconectado 
								Mensajes: 1.186
								
								
								
								
								
								   | 
 
No sé que tiempo te tomó en recorrer la imagen pero en mi caso fue una imagen mayor y por lo que debe hacer el algoritmo es un tiempo considerablemente aceptado.
 No sé si existe otro método.
 
 Saludos.
 |  
						| 
								|  |  
								|  |  En línea | 
 
 abc |  |  |  | 
			| 
					
						| TriBlack 
								
								 Desconectado 
								Mensajes: 12
								
								   | 
 
No sé que tiempo te tomó en recorrer la imagen pero en mi caso fue una imagen mayor y por lo que debe hacer el algoritmo es un tiempo considerablemente aceptado.
 No sé si existe otro método.
 
 Saludos.
 
 Buenas amigo he conseguido otro metodo y es mas rapido por lo que he visto solo tengo un problema el valor que arroja lo da en argb y en negativo de casualidad sabes como pasarlo de argb a rgb ¿? Aqui el metodo  int[][] result = new int[height][width];      if (hasAlphaChannel) {         final int pixelLength = 4;         for (int pixel = 0, row = 0, col = 0; pixel < pixels.length; pixel += pixelLength) {            int argb = 0;             argb += (((int) pixels[pixel] & 0xff) << 24); // alpha            argb += ((int) pixels[pixel + 1] & 0xff); // blue            argb += (((int) pixels[pixel + 2] & 0xff) << 8); // green            argb += (((int) pixels[pixel + 3] & 0xff) << 16); // red            result[row][col] = argb;             col++;            if (col == width) {               col = 0;               row++;            }         }      } else {         final int pixelLength = 3;         for (int pixel = 0, row = 0, col = 0; pixel < pixels.length; pixel += pixelLength) {            int argb = 0;             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            result[row][col] = argb;            col++;            if (col == width) {               col = 0;               row++;            }         }      }       return result;   }  
 Todo queda guardado en la matriz pero si la muestras los resultados son numeros negativos y en arbg como te dije arriba :S |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  |  |  
 
	
 
   |