在java中快速加载部分图像

在java中快速加载部分图像,java,image,memory,tile,Java,Image,Memory,Tile,我目前在一个二维的基于平铺的游戏的地图编辑器中工作。当我创建一个新地图时,瓷砖集被加载到内存中,并显示在JScrollPane中的JPanel中,因此我可以选择我想要绘制的瓷砖 起初,我只是画完整的图像,但这使得滚动速度非常慢,所以现在我只画它的可见部分,效果很好。我担心的是内存使用,因为tileset相当大。我并没有从记忆错误中得到任何好处,但我想尽我所能优化一切 我尝试将ImageReader与ImageReadParam.setSourceRegion()一起使用;这会占用更少的内存,但滚

我目前在一个二维的基于平铺的游戏的地图编辑器中工作。当我创建一个新地图时,瓷砖集被加载到内存中,并显示在JScrollPane中的JPanel中,因此我可以选择我想要绘制的瓷砖

起初,我只是画完整的图像,但这使得滚动速度非常慢,所以现在我只画它的可见部分,效果很好。我担心的是内存使用,因为tileset相当大。我并没有从记忆错误中得到任何好处,但我想尽我所能优化一切

我尝试将ImageReader与ImageReadParam.setSourceRegion()一起使用;这会占用更少的内存,但滚动速度会变慢,而且图像在滚动时会疯狂地闪烁,这可能是因为读取磁盘上的图像需要一些时间


那么,有没有一种好方法可以在不完全加载的情况下快速加载大图像的一部分?或者有一种方法可以完全加载它,但要以压缩的方式加载?

如果您有一个瓷砖集,为什么不绘制单个瓷砖?您可能应该有一个“引用”磁贴,然后有一个对该磁贴的引用网格。如果真的有必要的话,我会考虑只按需加载全质量的瓷砖-您的分析告诉您什么?我唯一一次遇到图像问题是在尝试加载和渲染16K×16K纹理时。我们可以看一些你如何加载和渲染图像的代码吗?我没有内存问题,只是我觉得应该有一种更好的方式来显示图像,而不是完全加载到内存中,因为我不会一次显示所有图像。