我遇到了类似的问题,我必须读取36张图像,将它们裁剪并保存到一个新文件中(一次一个)。我发现必须在每次迭代后将图像设置为null,以允许Java进行垃圾回收。即:
BufferedImage img;
for (int i=0; i<36; i++) {
img = ImageIo.ImageIO.read(anImageFile);
/* Do what's needed with the image (cropping, resizing etc.) */
ImageIO.write(img, "jpg", outputFile);
img.flush();
img = null;
}
我知道这是一个旧帖子,但我希望它将来能对某人有所帮助。