根据不同的使用场景创建一个BufferedImage对象有三种常见的方法。
第一种方法是创建一个全新的BufferedImage对象,直接调用BufferedImage的构造函数。其代码如下:
BufferedImage bi = new BufferedImage(width, height,
BufferedImage.TYPE_BYTE_GRAY);
第二种方法是根据已经存在的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;
}
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);
}