用BufferedImage加载图片

BufferedImage是Image的一个子类, BufferedImage生成的图片在内存里有一个图像缓冲区,利用这个缓冲区我们可以很方便的操作这个图片,通常用来做图片修改操作如大小变换、图片变灰、设置图片透明或不透明等。

Image是一个抽象列,BufferedImage是Image的实现。Image和BufferedImage的主要作用就是将一副图片加载到内存中。

Java将一副图片加载到内存中的方法是:

String imgPath = "C://demo.jpg";

BufferedImage image = ImageIO.read(new FileInputStream(imgPath));

可以用该方法可以获得图片的详细信息,例如:

获得图片的宽度:image.getWidth(null);图片只有加载内存中才能对图片进行进一步的处理。

接下来画出加载过的图片

当我们要在哪里绘图时,就先获得该对象的Graphics对象的引用,然后调用drawImage的方法。对于BuffereImage对象也是一样的。先在BuffereImage对象中绘图,然后将BuffereImage对象绘制到Frame中。这样就实现了双缓冲。

在paint方法中具体实现如下:

public void paint(Graphics g) {

super.paint(g);

bi = new BufferedImage(getSize().width, getSize().height, BufferedImage.TYPE_INT_ARGB);

Graphics bg = bi.getGraphics(); //在这里获得了bi的Graphics的引用

bg.drawImage(要显示的图片,.....);//调用bg的drawImage方法。

if (fi) {

g = img.getGraphics();

g.drawImage(bi, 50, 50, 40, 40, this);

}

}

推荐阅读 更多精彩内容