【发布时间】:2011-07-24 06:02:21
【问题描述】:
我想为一组图像创建缩略图。为此,我正在使用以下代码。
public void run() {
try{
BufferedImage originalImage = ImageIO.read(new File(url));
int type = originalImage.getType() == 0? BufferedImage.TYPE_INT_ARGB : originalImage.getType();
IMG_HEIGHT = (originalImage.getHeight()*600)/originalImage.getWidth();
BufferedImage resizeImageJpg = resizeImage(originalImage, type);
ImageIO.write(resizeImageJpg, "jpg", new File(thumb));
originalImage.flush();
resizeImageJpg.flush();
System.gc();
}catch(IOException e){
System.out.println(e.getMessage());
System.out.println("Not Created:"+url);
}
}
private static BufferedImage resizeImage(BufferedImage originalImage, int type){
BufferedImage resizedImage = new BufferedImage(IMG_WIDTH, IMG_HEIGHT, type);
Graphics2D g = resizedImage.createGraphics();
g.drawImage(originalImage, 0, 0, IMG_WIDTH, IMG_HEIGHT, null);
g.dispose();
System.gc();
return resizedImage;
}
此代码工作正常并创建缩略图。但问题是,在大量图像的情况下,我得到“java heap space error”。是这段代码的问题吗?我该如何解决这个问题。提前致谢。 如果您有任何其他调整大小的代码,请给我。
【问题讨论】:
-
看来你已经用完了堆空间。使用用于读取所有图像的 cicle 完成代码
标签: java resize thumbnails