• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

A Java Advanced Imaging program

发布: 2007-7-14 21:19 | 作者: 佚名    | 来源: 网络转载     | 查看: 36次 | 进入软件测试论坛讨论

领测软件测试网 // 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.
}
}

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网