我正在开发一个java 2d渲染程序(运行在1.6.0u11上),它使用外部图像进行ui渲染。这些大图像同时包含几个ui图形部分,我现在使用bufferedimage.getsubimage()提取这些部分。假设一个普通的桌面系统(没有启用DirectX/OpenGL加速),我的问题是:
getSubImage()是一个内存高效的调用,因为它共享底层图像数据,但这是否会影响这些子图像在graphics2d.drawImage()中的渲染速度?
如果图像使用每像素8位调色板模式,使用rgba模式(例如4x内存)或依赖调色板颜色模式(例如转换时间)的得失是多少?
最佳答案
据我所知,getSubimage(...)
不应该对渲染有任何显著影响。
转换图像数据速度很慢,通常最好尽量避免在运行中进行转换。
对于图像,慢度可以分为两类:
磁盘I/O
数据处理
磁盘I/O很容易成为最慢的部分。
如果您只使用图像的一部分,最好只能从磁盘加载图像的一部分。
我的经验是,JAI只做真正需要的事情比标准库的东西要好。