我以前问过这个问题,但我想改写/澄清一些观点并对其进行扩展。我有一段代码使用 AffineTransform 转换 BufferedImage。
op = new AffineTransformOp(atx, interactive ? interpolationInteractive : interpolationNormal);
displayImage = op.filter(displayImage, null);
此代码工作正常,但它会导致内存积累。具体来说,每次调用这段代码时都会存储更多内存。我也尝试过其他形式的过滤器。
op = new AffineTransformOp(atx, interactive ? interpolationInteractive : interpolationNormal);
displayImage2 = op.createCompatibleDestImage(displayImage, displayImage.getColorModel());
op.filter(displayImage, displayImage2);
但是,这比第一个版本要慢得多。我想要第一个版本的速度和第二个版本的内存使用量。
- 第一个版本后如何清理?具体来说,中间 BufferedImages 存储在哪里,如何删除它们?
- 为什么第二个版本比第一个慢?我该怎么做才能加快速度?
谢谢你的帮助!!!