根据不同的使用场景创建一个BufferedImage对象有三种常见方法,第一种方法是创建一个全新的BufferedImage对象,直接调用BufferedImage的构造函数。这在图形绘制的程序中比较常见,其代码如下:
BufferedImage bi = new BufferedImage(width, height,
BufferedImage.TYPE_BYTE_GRAY);
其中width表示图像的宽度,height表示高度,最后一个参数声明图像字节灰度图像。
第二种方法是根据已经存在的BufferedImage对象来创建一个相同的copy体。这种方法在图像处理的程序中最常见,其代码如下:
public BufferedImage createBufferedImage(BufferedImage src) { ColorModel cm = src.getColorModel(); BufferedImage image = new BufferedImage(cm, cm.createCompatibleWritableRaster( src.getWidth(), src.getHeight()), cm.isAlphaPremultiplied(), null); return image; }
第三种方法是通过创建ColorModel与Raster对象实现BufferedImage对象的实例化,其代码如下:
public BufferedImage createBufferedImage(int width, int height, byte[] pixels) { ColorModel cm = getColorModel(); SampleModel sm = getIndexSampleModel((IndexColorModel) cm, width, height); DataBuffer db = new DataBufferByte(pixels, width * height, 0); WritableRaster raster = Raster.createWritableRaster(sm, db, null); BufferedImage image = new BufferedImage(cm, raster, false, null); return image; }
上述几种方法都是关于如何创建一个BufferedImage对象的,下面来看一下如何保存BufferedImage对象为本地图像文件。Java中提供了ImageIO工具类来实现图像文件与BufferedImage对象之间的转换,读取一个图像文件时使用如下代码即可:
public BufferedImage readImageFile(File file) { try { BufferedImage image = ImageIO.read(file); return image; } catch (IOException e) { e.printStackTrace(); } return null; } 保存BufferedImage对象为图像文件的代码如下: public void writeImageFile(BufferedImage bi) throws IOException { File outputfile = new File("saved.png"); ImageIO.write(bi, "png",outputfile); }