我正在寻找一种更快的方法来创建大型(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()
}
答案 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);
}