|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
// 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. } } 返回类别: 教程 上一教程: JAVA正则表达式--PATTERN和MATCHER 下一教程: JSP + JAVABEAN循序渐进教程(一) 您可以阅读与"A JAVA ADVANCED IMAGING PROGRAM"相关的教程: · Java Thread Programming 1.8.3 - Inter-thread Communication · JAVA HOW TO PROGRAM(THIRD EDITION)-我的JAVA手记(二) · Java Thread Programming 1.7 - Concurrent Access to Objects and Variables · Java Thread Programming 1.8.4 - Inter-thread Communication · Java Network Programming 笔记(2) |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |