龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

A Java Advanced Imaging program

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
// This program has two parts , it can invert a image, and compare with the original one in a frame.You need download and install Java Advanced Imaging before you use it!!! // compile: javac "###1lt;return // now, here is the code: //part o

  // This program has two parts , it can invert a image, and compare with the original one in a frame.You need download and install Java Advanced Imaging before you use it!!!
  
  // compile:
   javac "###1&2.java"
  //run:
   java "###2" "image file name.jpg" <return>
  
  
  // now, here is the code:
  
  //part one:
  
  import java.awt.GridLayout;
  import java.awt.event.AdjustmentEvent;
  import java.awt.event.AdjustmentListener;
  import java.awt.image.RenderedImage;
  
  import javax.media.jai.PlanarImage;
  import javax.swing.JPanel;
  import javax.swing.JScrollPane;
  
  /**
   * This class represents a Panel which contains two instances of
   * DisplayJAIWithPixelInfo.
   * The scrolling bars of both images are synchronized so scrolling one image
   * will automatically scroll the other.
   */
  public class DisplayTwoSynchronizedImages extends JPanel
   implements AdjustmentListener
   {
   /** The DisplayJAIWithPixelInfo for the first image. */
   protected DisplayJAIWithPixelInfo dj1;
   /** The DisplayJAIWithPixelInfo for the second image. */
   protected DisplayJAIWithPixelInfo dj2;
   /** The JScrollPane which will contain the first of the images */
   protected JScrollPane jsp1;
   /** The JScrollPane which will contain the second of the images */
   protected JScrollPane jsp2;
  
   /**
   * ConstrUCts an instance of this class, setting the components? layout,
   * creating two instances of DisplayJAI for the two images and creating/
   * registering event handlers for the scroll bars.
   * @param im1 the first image (left side)
   * @param im2 the second image (right side)
   */
   public DisplayTwoSynchronizedImages(PlanarImage im1,PlanarImage im2)
   {
   super();
   setLayout(new GridLayout(1,2));
   dj1 = new DisplayJAIWithPixelInfo(im1); // Instances of DisplayJAI for the
   dj2 = new DisplayJAIWithPixelInfo(im2); // two images
   jsp1 = new JScrollPane(dj1); // JScrollPanes for the both
   jsp2 = new JScrollPane(dj2); // instances of DisplayJAI
   add(jsp1);
   add(jsp2);
   // Retrieve the scroll bars of the images and registers adjustment
   // listeners to them.
   // Horizontal scroll bar of the first image.
   jsp1.getHorizontalScrollBar().addAdjustmentListener(this);
   // Vertical scroll bar of the first image.
   jsp1.getVerticalScrollBar().addAdjustmentListener(this);
   // Horizontal scroll bar of the second image.
   jsp2.getHorizontalScrollBar().addAdjustmentListener(this);
   // Vertical scroll bar of the second image.
   jsp2.getVerticalScrollBar().addAdjustmentListener(this);
   }
  
   /**
   * This method changes the first image to be displayed.
   * @param newImage the new first image.
   */
   public void setImage1(PlanarImage newimage)
   {
   dj1.set(newimage);
   repaint();
   }
  
   /**
   * This method changes the second image to be displayed.
   * @param newImage the new second image.
   */
   public void setImage2(PlanarImage newimage)
   {
   dj2.set(newimage);
   repaint();
   }
  
   /**
   * This method returns the first image.
   * @return the first image.
   */
   public RenderedImage getImage1()
   {
   return dj1.getSource();
   }
  
   /**
   * This method returns the second image.
   * @return the second image.
   */
   public RenderedImage getImage2()
   {
   return dj2.getSource();
   }
  
   /**
   * This method returns the first DisplayJAI component.
   * @return the first DisplayJAI component.
   */
   public DisplayJAIWithPixelInfo getDisplayJAIComponent1()
   {
   return dj1;
   }
  
   /**
   * This method returns the second DisplayJAI component.
   * @return the second DisplayJAI component.
   */
   public DisplayJAIWithPixelInfo getDisplayJAIComponent2()
   {
   return dj2;
   }
  
   /**
   * This method will be called when any of the scroll bars of the instances of
   * DisplayJAI are changed. The method will adjust the scroll bar of the other
   * DisplayJAI as needed.
   * @param e the AdjustmentEvent that ocurred (meaning that one of the scroll
   * bars position has changed.
   */
   public void adjustmentValueChanged(AdjustmentEvent e)
   {
   // If the horizontal bar of the first image was changed...
   if (e.getSource() == jsp1.getHorizontalScrollBar())
   {
   // We change the position of the horizontal bar of the second image.
   jsp2.getHorizontalScrollBar().setValue(e.getValue());
   }
   // If the vertical bar of the first image was changed...
   if (e.getSource() == jsp1.getVerticalScrollBar())
   {
   // We change the position of the vertical bar of the second image.
   jsp2.getVerticalScrollBar().setValue(e.getValue());
   }
   // If the horizontal bar of the second image was changed...
   if (e.getSource() == jsp2.getHorizontalScrollBar())
   {
   // We change the position of the horizontal bar of the first image.
   jsp1.getHorizontalScrollBar().setValue(e.getValue());
   }
   // If the vertical bar of the second image was changed...
   if (e.getSource() == jsp2.getVerticalScrollBar())
   {
   // We change the position of the vertical bar of the first image.
   jsp1.getVerticalScrollBar().setValue(e.getValue());
   }
   }
  
   }
  
  
  
  
  //Ok, now is the main function , part two:
  
  import javax.media.jai.JAI;
  import javax.media.jai.PlanarImage;
  import javax.swing.JFrame;
  
  
  /**
   * This class demonstrates the use of the invert operator.
   */
  public class Invert
   {
   /**
   * The application entry point.
   * @param args the command line arguments.
   */
   public static void main(String[] args)
   {
   // We need one argument: the image filename.
   if (args.length != 1)
   {
   System.err.println("Usage: java operators.Invert image");
   System.exit(0);
   }
   // Read the image.
   PlanarImage input = JAI.create("fileload", args[0]);
   // Invert the image.
   PlanarImage output = JAI.create("invert", input);
   // Create a JFrame for displaying the results.
   JFrame frame = new JFrame();
   frame.setTitle("Invert image "+args[0]);
   // Add to the JFrame?s ContentPane an instance of DisplayTwoSynchronized-
   // Images, which will contain the original and processed image.
   frame.getContentPane().add(new DisplayTwoSynchronizedImages(input,output));
   // Set the closing operation so the application is finished.
   frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   frame.pack(); // adjust the frame size using preferred dimensions.
   frame.setVisible(true); // show the frame.
   }
  
   }
  
精彩图集

赞助商链接