大图(10000*5000)进行图像处理时的问题
对一幅图像进行处理(例如模糊效果),
我使用
DataBufferInt dbi = (DataBufferInt) (buffImg.getRaster().getDataBuffer());
return dbi.getData();
取出图像的所有像素,填入一个int[] imgdata,然后使用算法从每个元素中取得RGB值进行处理。
以前,程序支持的图像大小最多为 5000*2500 像素,int[] imgdata = int [5000*2500],能够装入所有像素;
可是现在要求能够处理 10000*5000 像素的图像,int[] imgdata = int [10000*5000]就会抛出异常:java.lang.OutOfMemoryError: Java heap space
请问这是为什么?怎样可以解决呢。能否不取出像素到 int 数组,直接对 BufferedImage 进行图像处理?或者还有什么别的办法?