2011-07-27 45 views
1

我使用JAI库上做了一系列的图像的调整,在规模各约1300x1000。我使用“Rescale”调整像素亮度,并使用TiledImage.createGraphics()方法中的Graphics2D对象添加文本和线条。然后我调整图像的大小以适应“subsampleaverage”的屏幕,并使用Graphics2D.drawRenderedImage()渲染到屏幕。到目前为止,几乎没有放缓,渲染时间约为40-60毫秒。JAI图像调整瓶颈

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

我一直在寻找通过该网站,但我似乎无法找到任何具体的答案。许多建议都是使用BufferedImages,但是从PlanarImages转换到BufferedImages似乎也有一个放缓的问题。

+0

对于有这个问题的人,我建议使用JOGL进行显示和调整大小。在用JAI和JOGL摆弄之后,我已经能够解决大部分的放缓问题。 – ddukki

回答

1

显然的文字是用Java仍然呈现非常缓慢。每个Font对象的字形都必须在Graphics对象上进行渲染和绘制。随着对象上的大量文本,Font对象以及所有使用的Glyphs被重新创建,导致大幅放缓。

即使使用JOGL,有显著放缓。但是使用相同的TextRenderer对象通过创建一个单一的Font对象来缓解这个问题,只要TextRenderer存在,就可以重用它。当然,这限制了您使用多个Font对象,因为JOGL尚未实现setFont函数,要求您为每种新字体,字体样式和字体重量创建一个新的TextRenderer对象。

希望这有助于类似问题的人。