我正在开发 Java 2D 渲染程序(在 1.6.0_11 上运行),它使用外部图像进行 UI 渲染。这些大图像同时包含多个 UI 图形部分,我现在使用 BufferedImage.getSubimage() 提取它们。假设一个普通的桌面系统(我们没有启用 DirectX/OpenGL 加速),我的问题是:
- getSubimage() 是一种内存高效调用,因为它共享底层图像数据,但这是否会影响使用 Graphics2D.drawImage() 渲染这些子图像的速度?
- 如果图像使用每像素 8 位调色板模式,使用 RGBA 模式(例如 4 倍内存)或依赖调色板颜色模型(例如转换时间)的 yield /损失是多少?
最佳答案
据我所知,getSubimage(...)
应该不会对渲染产生任何重大影响。
转换图像数据很慢,通常最好避免即时进行。
图像缓慢可以分为两类:
- 磁盘输入/输出
- 数据处理
磁盘 I/O 很容易成为最慢的部分。
如果您打算只使用图像的一部分,最好只能从磁盘加载图像的一部分。
我的经验是JAI比标准库的东西更擅长只做真正需要的事情。
关于java - BufferedImage 的 getSubimage 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/500484/