arj*_*urs 3 java out-of-memory javax.imageio
我正在使用ImageIO API编写PNG文件。在循环中调用此代码,并导致OutOfMemory错误。无论如何,可以固定以下代码来避免OutOfMemory错误吗?还是增加JVM堆大小的唯一选择?
File file = new File(resultMap.get("outputFile").toString());
//ImageIO to convert jpg to png
BufferedImage img = ImageIO.read(file);
file = new File(resultMap.get("outputFile").toString() + ".png");
ImageIO.write(img, "png", file);
Run Code Online (Sandbox Code Playgroud)
Java堆大小为1024M。
小智 7
我有一个类似的问题,我必须读取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;
}
Run Code Online (Sandbox Code Playgroud)
我知道这是一个旧帖子,但我希望它将来能对某人有所帮助。
| 归档时间: |
|
| 查看次数: |
8430 次 |
| 最近记录: |