Código
public boolean escalaDeGrises() { boolean estado = true; int p, promedio, rojo, verde, azul; int a = imagenBase.getWidth(this); //Ancho int h = imagenBase.getHeight(this); //Alto int totalDePixeles = a * h; int pixeles[] = new int[totalDePixeles]; //Arreglo de pixeles try { pg.grabPixels(); for(int i = 0; i < totalDePixeles; i++) { p = pixeles[i]; //Valor de un pixel rojo = (0xff & (p>>16)); //Desplaza el entero p 16 bits a la derecha y aplica la operacion AND a los primeros 8 bits verde = (0xff & (p>>8)); //Desplaza el entero p 8 bits a la derecha y aplica la operacion AND a los siguientes 8 bits azul = (0xff & p) ; //Aplica la operacion AND a los siguientes 8 bits promedio = (int) ((rojo+verde+azul)/3); pixeles[i]=(0xff000000|promedio<<16|promedio<<8|promedio); } { //JOptionPane.showMessageDialog((Component)null,"Error del sistema : "+e.getMessage(),"Error de Imagen",JOptionPane.OK_OPTION); estado = false; this.mensajeDeError = e.getMessage(); } return estado; }