【发布时间】:2016-08-09 16:51:49
【问题描述】:
我有几个巨大的图像无法全部加载到内存中。我知道图像是平铺的,ImageReader 类中的所有方法都为我提供了合理的非零返回值
getTileGridXOffset(int),
getTileGridYOffset(int),
getTileWidth(int) 和
getTileHeight(int).
我现在的问题是我只想读取一个图块以避免使用ImageReader.readtTile(int, int, int) 方法将整个图像加载到内存中。但是如何确定瓦片坐标的有效值是什么?
在接口RenderedImage 中有getNumXTiles() 和getNumYTiles() 方法,但是所有从源创建渲染图像的尝试都会导致out of memory/java heap space 错误。
理论上,平铺坐标可以是任何东西,我尝试了readtTile(0, -1, -1),它也适用于我测试的一些图像。
我还尝试访问这些图像的元数据,但没有找到任何有关图像布局的有用信息。
有没有人可以告诉我如何在不必将整个图像读入内存的情况下获取图块坐标的值?还有另一种不需要ImageLayout 实例的方法吗?
非常感谢您的帮助。
【问题讨论】:
标签: java tiles javax.imageio imaging jai