elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Java Colores
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Java Colores  (Leído 3,482 veces)
TriBlack

Desconectado Desconectado

Mensajes: 12



Ver Perfil
Java Colores
« en: 14 Agosto 2013, 22:47 pm »

Buenas... me gustaria saber si existe algun metodo en java para tomar el color de algo al dar un click me explico xD que por ejemplo de click en el boton de "Inicio" en el Windows y me de su color en hexadecimal o decimal... Gracias de antemano :)


En línea

1mpuls0


Desconectado Desconectado

Mensajes: 1.186


Ver Perfil
Re: Java Colores
« Respuesta #1 en: 14 Agosto 2013, 23:27 pm »

Código
  1. try {
  2.            Robot robot = new Robot();
  3.  
  4.            Color color = robot.getPixelColor(500, 500);
  5.  
  6.            System.out.println("Red   = " + color.getRed());
  7.            System.out.println("Green = " + color.getGreen());
  8.            System.out.println("Blue  = " + color.getBlue());
  9.  
  10.        } catch (AWTException e) {
  11.            e.printStackTrace();
  12.        }
  13.  

Con mouseClicked obtienes las coordenadas donde se hizo clic.

Saludos.


En línea

abc
TriBlack

Desconectado Desconectado

Mensajes: 12



Ver Perfil
Re: Java Colores
« Respuesta #2 en: 15 Agosto 2013, 00:13 am »

Código
  1. try {
  2.            Robot robot = new Robot();
  3.  
  4.            Color color = robot.getPixelColor(500, 500);
  5.  
  6.            System.out.println("Red   = " + color.getRed());
  7.            System.out.println("Green = " + color.getGreen());
  8.            System.out.println("Blue  = " + color.getBlue());
  9.  
  10.        } catch (AWTException e) {
  11.            e.printStackTrace();
  12.        }
  13.  

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 Desconectado

Mensajes: 1.186


Ver Perfil
Re: Java Colores
« Respuesta #3 en: 15 Agosto 2013, 05:58 am »

Algo así podría servirte.

Código
  1. package Intermediate;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Robot;
  5. import java.awt.AWTException;
  6. import java.awt.Rectangle;
  7. import java.awt.Toolkit;
  8. import java.awt.image.BufferedImage;
  9. import java.awt.image.DataBufferByte;
  10. import java.io.File;
  11. import javax.imageio.ImageIO;
  12. import java.io.IOException;
  13.  
  14. public class ClickMouse extends javax.swing.JFrame {
  15.  
  16.    public static void main(String args[]) {
  17.        try {
  18.            Robot robot = new Robot();
  19.            Rectangle captureSize = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
  20.            BufferedImage bufferedImage = robot.createScreenCapture(captureSize);
  21.            marchThroughImage(bufferedImage);
  22.  
  23.            /*File outputfile = new File("image.jpg");
  24.             ImageIO.write(bufferedImage, "jpg", outputfile);*/
  25.        } catch (AWTException e) {
  26.            e.printStackTrace();
  27.        } /*catch (IOException e) {
  28.             e.printStackTrace();
  29.         }*/
  30.    }
  31.  
  32.    private static void marchThroughImage(BufferedImage image) {
  33.        int w = image.getWidth();
  34.        int h = image.getHeight();
  35.        System.out.println("width, height: " + w + ", " + h);
  36.  
  37.        for (int i = 0; i < h; i++) {
  38.            for (int j = 0; j < w; j++) {
  39.                System.out.println("x,y: " + j + ", " + i);
  40.                int pixel = image.getRGB(j, i);
  41.                printPixelARGB(pixel);
  42.                System.out.println("");
  43.            }
  44.        }
  45.    }
  46.  
  47.    public static void printPixelARGB(int pixel) {
  48.        int alpha = (pixel >> 24) & 0xff;
  49.        int red = (pixel >> 16) & 0xff;
  50.        int green = (pixel >> 8) & 0xff;
  51.        int blue = (pixel) & 0xff;
  52.        System.out.println("argb: " + alpha + ", " + red + ", " + green + ", " + blue);
  53.    }
  54.  
  55. }
  56.  

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 Desconectado

Mensajes: 12



Ver Perfil
Re: Java Colores
« Respuesta #4 en: 16 Agosto 2013, 04:21 am »

Algo así podría servirte.

Código
  1. package Intermediate;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Robot;
  5. import java.awt.AWTException;
  6. import java.awt.Rectangle;
  7. import java.awt.Toolkit;
  8. import java.awt.image.BufferedImage;
  9. import java.awt.image.DataBufferByte;
  10. import java.io.File;
  11. import javax.imageio.ImageIO;
  12. import java.io.IOException;
  13.  
  14. public class ClickMouse extends javax.swing.JFrame {
  15.  
  16.    public static void main(String args[]) {
  17.        try {
  18.            Robot robot = new Robot();
  19.            Rectangle captureSize = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
  20.            BufferedImage bufferedImage = robot.createScreenCapture(captureSize);
  21.            marchThroughImage(bufferedImage);
  22.  
  23.            /*File outputfile = new File("image.jpg");
  24.             ImageIO.write(bufferedImage, "jpg", outputfile);*/
  25.        } catch (AWTException e) {
  26.            e.printStackTrace();
  27.        } /*catch (IOException e) {
  28.             e.printStackTrace();
  29.         }*/
  30.    }
  31.  
  32.    private static void marchThroughImage(BufferedImage image) {
  33.        int w = image.getWidth();
  34.        int h = image.getHeight();
  35.        System.out.println("width, height: " + w + ", " + h);
  36.  
  37.        for (int i = 0; i < h; i++) {
  38.            for (int j = 0; j < w; j++) {
  39.                System.out.println("x,y: " + j + ", " + i);
  40.                int pixel = image.getRGB(j, i);
  41.                printPixelARGB(pixel);
  42.                System.out.println("");
  43.            }
  44.        }
  45.    }
  46.  
  47.    public static void printPixelARGB(int pixel) {
  48.        int alpha = (pixel >> 24) & 0xff;
  49.        int red = (pixel >> 16) & 0xff;
  50.        int green = (pixel >> 8) & 0xff;
  51.        int blue = (pixel) & 0xff;
  52.        System.out.println("argb: " + alpha + ", " + red + ", " + green + ", " + blue);
  53.    }
  54.  
  55. }
  56.  

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  :D
En línea

TriBlack

Desconectado Desconectado

Mensajes: 12



Ver Perfil
Re: Java Colores
« Respuesta #5 en: 21 Agosto 2013, 04:36 am »

Algo así podría servirte.

Código
  1. package Intermediate;
  2.  
  3. import java.awt.Color;
  4. import java.awt.Robot;
  5. import java.awt.AWTException;
  6. import java.awt.Rectangle;
  7. import java.awt.Toolkit;
  8. import java.awt.image.BufferedImage;
  9. import java.awt.image.DataBufferByte;
  10. import java.io.File;
  11. import javax.imageio.ImageIO;
  12. import java.io.IOException;
  13.  
  14. public class ClickMouse extends javax.swing.JFrame {
  15.  
  16.    public static void main(String args[]) {
  17.        try {
  18.            Robot robot = new Robot();
  19.            Rectangle captureSize = new Rectangle(Toolkit.getDefaultToolkit().getScreenSize());
  20.            BufferedImage bufferedImage = robot.createScreenCapture(captureSize);
  21.            marchThroughImage(bufferedImage);
  22.  
  23.            /*File outputfile = new File("image.jpg");
  24.             ImageIO.write(bufferedImage, "jpg", outputfile);*/
  25.        } catch (AWTException e) {
  26.            e.printStackTrace();
  27.        } /*catch (IOException e) {
  28.             e.printStackTrace();
  29.         }*/
  30.    }
  31.  
  32.    private static void marchThroughImage(BufferedImage image) {
  33.        int w = image.getWidth();
  34.        int h = image.getHeight();
  35.        System.out.println("width, height: " + w + ", " + h);
  36.  
  37.        for (int i = 0; i < h; i++) {
  38.            for (int j = 0; j < w; j++) {
  39.                System.out.println("x,y: " + j + ", " + i);
  40.                int pixel = image.getRGB(j, i);
  41.                printPixelARGB(pixel);
  42.                System.out.println("");
  43.            }
  44.        }
  45.    }
  46.  
  47.    public static void printPixelARGB(int pixel) {
  48.        int alpha = (pixel >> 24) & 0xff;
  49.        int red = (pixel >> 16) & 0xff;
  50.        int green = (pixel >> 8) & 0xff;
  51.        int blue = (pixel) & 0xff;
  52.        System.out.println("argb: " + alpha + ", " + red + ", " + green + ", " + blue);
  53.    }
  54.  
  55. }
  56.  

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 Desconectado

Mensajes: 1.186


Ver Perfil
Re: Java Colores
« Respuesta #6 en: 21 Agosto 2013, 16:31 pm »

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 Desconectado

Mensajes: 12



Ver Perfil
Re: Java Colores
« Respuesta #7 en: 22 Agosto 2013, 18:38 pm »

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

Código
  1. int[][] result = new int[height][width];
  2.      if (hasAlphaChannel) {
  3.         final int pixelLength = 4;
  4.         for (int pixel = 0, row = 0, col = 0; pixel < pixels.length; pixel += pixelLength) {
  5.            int argb = 0;
  6.  
  7.            argb += (((int) pixels[pixel] & 0xff) << 24); // alpha
  8.            argb += ((int) pixels[pixel + 1] & 0xff); // blue
  9.            argb += (((int) pixels[pixel + 2] & 0xff) << 8); // green
  10.            argb += (((int) pixels[pixel + 3] & 0xff) << 16); // red
  11.            result[row][col] = argb;
  12.  
  13.            col++;
  14.            if (col == width) {
  15.               col = 0;
  16.               row++;
  17.            }
  18.         }
  19.      } else {
  20.         final int pixelLength = 3;
  21.         for (int pixel = 0, row = 0, col = 0; pixel < pixels.length; pixel += pixelLength) {
  22.            int argb = 0;
  23.  
  24.            argb += -16777216; // 255 alpha
  25.            argb += ((int) pixels[pixel] & 0xff); // blue
  26.            argb += (((int) pixels[pixel + 1] & 0xff) << 8); // green
  27.            argb += (((int) pixels[pixel + 2] & 0xff) << 16); // red
  28.            result[row][col] = argb;
  29.            col++;
  30.            if (col == width) {
  31.               col = 0;
  32.               row++;
  33.            }
  34.         }
  35.      }
  36.  
  37.      return result;
  38.   }
  39.  
  40.  

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

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Colores de la web
Sugerencias y dudas sobre el Foro
malferI 4 1,464 Último mensaje 8 Junio 2004, 05:43 am
por malferI
colores
Programación C/C++
peterfly 1 1,274 Último mensaje 31 Enero 2012, 08:20 am
por pandulce
Trabajando Con Colores En Java Y Netbeans (duda)
Java
TeclaFurtiva 1 3,615 Último mensaje 16 Agosto 2012, 05:46 am
por TeclaFurtiva
COLORES EN MATRIZ JAVA
Java
DarioGarcia 3 2,731 Último mensaje 17 Agosto 2014, 20:57 pm
por gordo23
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines