对图像进行水平镜像和垂直镜像!

//Mirror.java/* 程序说明:对图像进行水平镜像和垂直镜像!  最后修改时间:2003-12  作者:haibin */ import java.awt.*;import java.awt.event.*;import java.awt.image.*;import javax.swing.*; public class Mirror extends Frame { Image im,tmp; int iw,ih; int[] pixels; boolean flagLoad=false;  public Mirror(){  this.setTitle("图像的水平和垂直镜像");  Panel pdown;  Button load,horizon,vertical,quit;    //添加窗口监听事件  addWindowListener(new WindowAdapter(){   public void windowClosing(WindowEvent e){    System.exit(0);   }  });    pdown = new Panel();  pdown.setBackground(Color.lightGray);    load=new Button("加载图像");  horizon=new Button("水平镜像");  vertical= new Button("垂直镜像");  quit=new Button("退出");    this.add(pdown,BorderLayout.SOUTH);    pdown.add(load);  pdown.add(horizon);  pdown.add(vertical);  pdown.add(quit);    load.addActionListener(new ActionListener(){   public void actionPerformed(ActionEvent e){    jLoad_ActionPerformed(e);   }  });    horizon.addActionListener(new ActionListener(){   public void actionPerformed(ActionEvent e){    jHorizon_ActionPerformed(e);   }  });    vertical.addActionListener(new ActionListener(){  public void actionPerformed(ActionEvent e){    jVertical_ActionPerformed(e);   }  });    quit.addActionListener(new ActionListener(){  public void actionPerformed(ActionEvent e){    jQuit_ActionPerformed(e);   }  }); }  public void jLoad_ActionPerformed(ActionEvent e){  //利用MediaTracker跟踪图像的加载  MediaTracker tracker = new MediaTracker(this);  im=Toolkit.getDefaultToolkit().getImage("Miss.jpg");  tracker.addImage(im,0);   //等待图像的完全加载  try{  tracker.waitForID(0);   }catch(InterruptedException e2){ e2.printStackTrace();}     //获取图像的宽度iw和高度ih  iw=im.getWidth(this);  ih=im.getHeight(this);  pixels=new int[iw*ih];    try{  PixelGrabber pg=new PixelGrabber(im,0,0,iw,ih,pixels,0,iw);  pg.grabPixels();  }catch (InterruptedException e3) {   e3.printStackTrace();  }   //将数组中的象素产生一个图像  ImageProducer ip=new MemoryImageSource(iw,ih,pixels,0,iw);  tmp=createImage(ip);  flagLoad=true;  repaint(); }  public  void jHorizon_ActionPerformed(ActionEvent e){  if(flagLoad){  //可以进行连续的镜像!  /*  try{  PixelGrabber pg=new PixelGrabber(im,0,0,iw,ih,pixels,0,iw);  pg.grabPixels();  }catch (InterruptedException e3) {   e3.printStackTrace();  }  */      //对图像进行水平镜像,Alpha值保持不变  int [] tempPixels=new int[iw*ih];  for(int i=0;i

你可能感兴趣的:(button,import,im,算法,null,image)