import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.*;
public class image extends Frame
{
 public  static int w,h;  
 public static int ipixels[];
 Image Buf,img=null;
      
     public void initVal(){  
         String path="D:\\image\\79.jpg";
     img=this.getToolkit().getImage(path);   
         w=img.getWidth(null);
         h=img.getHeight(null);        
         ipixels=new int[w*h];            
         PixelGrabber pg = new PixelGrabber(img, 0, 0, w,h, ipixels, 0, w);//将RGB像素值存入ipixels
         
    }
    /*获取灰度值*/
    public static double[] getGrayValue(){
        double grayValue[] = new double[ipixels.length];
            for ( int i = 0; i < ipixels.length; i++ ){
                int r = (ipixels[i] >> 16)& 0xff;
                int g = (ipixels[i] >> 8 )& 0xff;
                int b = (ipixels[i]      )& 0xff;
                grayValue[i] =  0.2990 * r + 0.5870 * g + 0.1140 * b;
            }
            return grayValue;
    }
     public void showImage()
     {
      Image pic=createImage(new MemoryImageSource(w,h,grayValue,0,w));
        Buf.getGraphics().drawImage(pic,0,0,this); //显示黑白图片;
     }
      public  void showGrayArrayImg(int[] grayArray,int w,int h){
         for(int i=0;i<grayArray.length;i++) {
            grayArray[i]=(255<<24)|(grayArray[i]<<16)|(grayArray[i]<<8)|grayArray[i];
        }
        Image im= createImage((ImageProducer)new MemoryImageSource(w,h,grayArray,0,w));
        
    }
    
public static void main(String[] args) 
{
     image my=new image();
     my.initVal();
     my.getGrayValue();
     my.showImage();
}
}