更快速地创建大型BufferedImages

时间:2015-05-01 16:41:49

标签: java bufferedimage

我正在寻找一种更快的方法来创建大型(12291x12291)BufferedImages。我正在使用Graphics2D g2d = image.createGraphics()来绘制它,将其保存到文件中,然后使用g.drawImage(image,0,0,null);加载它。我正在保存文件,以便稍后加载特定图像。截至目前,创建图像大约需要45秒到1分钟。有没有办法更快地创建这些图像?

我正在创建其中两张图片。

async.eachSeries(this.wiz.steps, function(item, callback) {
  //do stuff
  //when done 
  callback()
}

1 个答案:

答案 0 :(得分:1)

我会将Colors c = new Colors();移到所有循环之外。每次创建和垃圾收集该对象都会减慢速度,至少在JIT发现它可以被优化之前是这样。

由于磁盘访问速度比计算慢得多,您可以尝试通过将质量设置为零来最大化PNG的压缩:

try (ImageOutputStream out = ImageIO.createImageOutputStream(tiles1file)) {
    ImageWriter writer = ImageIO.getImageWritersByFormatName("png").next();
    writer.setOutput(out);

    ImageWriteParam param = writer.getDefaultWriteParam();
    param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
    param.setCompressionQuality(0);

    writer.write(null, new IIOImage(tiles1, null, null), param);
}