JAI图像调整瓶颈

时间:2011-07-27 19:02:15

标签: java image resize jai slowdown

我正在使用JAI库对一系列图像进行调整,每个图像的大小约为1300x1000。我使用“Rescale”调整像素强度,并使用TiledImage.createGraphics()方法中的Graphics2D对象添加文本和线条。然后我调整图像大小以适应屏幕“subsampleaverage”并使用Graphics2D.drawRenderedImage()渲染到屏幕。到目前为止,几乎没有减速,渲染大约需要40-60毫秒。

但是,如果我只添加文本和行,则显示速度会减慢到100-200毫秒。我似乎无法弄清楚为什么会这样,因为在调整像素强度之后或之前添加文本很好。

我一直在搜索网站,但我似乎找不到任何具体的答案。许多建议都是使用BufferedImages,但从PlanarImages转换为BufferedImages似乎也有一个减速问题。

1 个答案:

答案 0 :(得分:1)

显然,Java中的文本仍然很慢。必须在Font对象上渲染和绘制每个Graphics对象的字形。如果对象上有大量文本,则会重新创建Font对象以及所有使用过的Glyphs,从而导致速度大幅下降。

即使使用JOGL,也会出现明显的放缓。但是,使用相同的TextRenderer对象可以通过创建单个Font对象来缓解这种情况,并且只要TextRenderer处于活动状态就可以重用它。当然,这限制了您使用多个Font对象,因为JOGL还没有实现setFont函数,要求您为每个新字体,字体样式和字体粗细创建一个新的TextRenderer对象。

希望这可以帮助任何有类似问题的人。