java - JAI 图像调整瓶颈

标签 java image resize jai slowdown

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

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

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

最佳答案

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

即使使用 JOGL,速度也会显着下降。但使用相同的 TextRenderer 对象可以通过创建单个 Font 对象并在 TextRenderer 处于 Activity 状态时重复使用它来缓解这种情况。当然,这限制了您使用多个 Font 对象,因为 JOGL 尚未实现 setFont 函数,需要您为每个新字体、字体样式和字体粗细创建一个新的 TextRenderer 对象。

希望这对遇到类似问题的人有所帮助。

关于java - JAI 图像调整瓶颈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6849769/

相关文章:

javascript - 图像预加载不适用于 FireFox 中的图像

python - 在 Python 中将数组的大小调整为另一个形状

java - GridBagLayout 中组件的大小不正确

c - 尝试将 SDL_Surface 的大小加倍严重失败

java - 动态加载预编译类,无需反射

java - 如何设置 onItemClick 方法以显示我在 ListView 中单击的文本?

java - @Retryable 在 Spring Boot 应用程序中由集成测试触发时不重试

java - 根据条件如何创建 StringBuffer 并向其中追加数据

java - 线路检测 |用Java进行角度检测

jquery - 使用 jquery 从数组更改图像 src