如何读取部分图像(不是ImageIO.read())?

时间:2011-09-21 10:03:23

标签: java javax.imageio

Java支持使用ImageIO.read()读取整个图像,但是否只能部分读取图像?

背景:

我正在开发一个地图应用程序,它可以读取大图像,将它们分开,然后使用生成的图块作为地图的背景。在某些情况下,提供的图片可能非常大,因此将图片作为BufferedImage读取可能会导致OutOfMemoryError

我知道我可以给VM更大的堆空间,但我更喜欢通过仅部分读取图像来进一步降低风险的方法,i。即在256 * 256像素的图块中,我可以直接保存到文件系统。

2 个答案:

答案 0 :(得分:2)

自从我使用它以来已经很长时间了,但你可以使用 TiledImage 在JAI(Java高级成像)中完成它。

JAI homepage.

答案 1 :(得分:1)

如果您使用的是PNG格式,此库可让您逐行加载图像,因此您无需在内存中加载http://code.google.com/p/pngj/