3

我正在开发一个 Java 2D 渲染程序(在 1.6.0_11 上运行),它使用外部图像进行 UI 渲染。这些大图像同时包含几个 UI 图形部分,我现在使用 BufferedImage.getSubimage() 提取它们。假设一个普通的桌面系统(我们没有启用 DirectX/OpenGL 加速),我的问题是:

  • getSubimage() 是一个内存高效调用,因为它共享底层图像数据,但这会影响这些子图像与 Graphics2D.drawImage() 的渲染速度吗?
  • 如果图像使用每像素 8 位的调色板模式,那么使用 RGBA 模式(例如 4x 内存)或依赖调色板颜色模型(例如转换时间)的增益/损失是多少?
4

1 回答 1

1

据我所知,getSubimage(...)应该不会对渲染产生任何重大影响。

转换图像数据很慢,通常最好尽量避免在运行中进行。


用图像的慢速可以分为两类:

  • 磁盘 I/O
  • 数据处理

磁盘 I/O 很容易成为最慢的部分。

如果您打算只使用图像的一部分,最好能够从磁盘仅加载图像的一部分。

我的经验是,与标准库的东西相比,JAI更擅长只做真正需要的事情。

于 2009-02-05T18:50:24.990 回答