// 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!!!
/** * 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()); } }
/** * 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. }