您的位置:首页 > 编程语言 > Java开发

java图像

2016-01-15 13:51 351 查看
这个Java例子将演示如何来创建缓冲区图像,并且将图像显示出来。这个例子较为简单,仅仅是创建了一个缓冲区图像,并没有做任何的加工处理就将其显示出来,但这将是后面例子中缓冲区图像处理的基础。
要创建缓冲区图像, 将用到java.awt.image 包中BufferedImage 类。该类是抽象类java.awt.Image 的扩展类。本例中,为了创建一个缓冲区图像,将调用源自java.awt.component 类的createImage()方法,该方法返回一个Image 对象,然后将该对象转换为一个BufferedImage 对象,具体实现如下:
BufferedImage bimage = (BufferedImage)this.createImage(this.getWidth(),this.getHeight());
上面代码的this 代表具体程序中将创建的Canvas 类的子类。但这样,仅仅是创建了一个空的缓冲区对象,里面没有图像数据。为此还得调用BufferedImage对象的createGraphics()方法,该方法返回一个Graphics2D 的实例,然后利用这个Graphics2D 实例的drawImage()方法,就可以向缓冲区图像中存储图像数据。具体代码如下:
bimage.createGraphics().drawImage(this.image,0,0,this); // this.image 是一个Image 对象
具体实现步骤为:
1.新建一个Project,取名为JBufferedImageDemo。
2.新建一个Application,取名为JBufferedImageDemo;主窗口取名为MainFrame,标题为JBufferedImageDemo。
3.在MainFrame 类中,创建新的属性,DrawCanvas canvas,代码如下:
public class MainFrame extends JFrame {
private JPanel contentPane;
private BorderLayout borderLayout1 = new BorderLayout();
//创建一个DrawCanvas 对象,用于绘制图像
DrawCanvas canvas = new DrawCanvas();
……
}
4.编写MainFrame 类的初始化方法jbInit(),在窗口上添加创建的canvas 对象。
private void jbInit() throws Exception {
//setIconImage(Toolkit.getDefaultToolkit().createImage(MainFrame.class.getResource("[Your Icon]")));
contentPane = (JPanel) this.getContentPane();
contentPane.setLayout(borderLayout1);
this.setSize(new Dimension(400, 300));
this.setTitle("JBufferedImageDemo");
//添加canvas 对象
contentPane.add(this.canvas,BorderLayout.CENTER);
}
5.编写MainFrame 类的内部类DrawCanvas 继承Canvas 类,用来绘制图像。具体如下:
class DrawCanvas extends Canvas{
Image image; //申明将显示的图片
public DrawCanvas(){
//加载图片,改过程在之前的例子中已经讲述,不在解释
image = this.getToolkit().getImage(ClassLoader.getSystemResource("images/image.jpg"));
MediaTracker mt = new MediaTracker(this);
mt.addImage(image,1);
try{
mt.waitForAll();
}catch(Exception err){
err.printStackTrace();
}
if (image.getWidth(this) == -1){
System.out.println("Could not get the image");
System.exit(-1);
}
this.setBackground(Color.black);
}
public void paint(Graphics g){
Graphics2D g2D = (Graphics2D)g;
//创建缓冲区图像
BufferedImage bimage = (BufferedImage)this.createImage(this.getWidth(),this.getHeight());
//向缓冲区图像中存储图片数据
bimage.createGraphics().drawImage(this.image,0,0,this);
g2D.drawImage(bimage,0,0,this); //绘制缓冲区图像
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: