この方法でダウンロードした画像のサイズを変更しようとしていますが、約100枚の画像のサイズを変更すると、プログラムが非常に遅くなります。接続などを閉じるのを忘れたためだと思いますが、すべてのストリームと接続を閉じたと確信しています。何が問題なのか、何がすべてのメモリを詰まらせて実行を遅らせ、最終的にプログラムが中断されるのかわかりません。助けてください!
private String resizePhoto(String str, String leg_id, int size, String path) {
HttpURLConnection connection = null;
if (str == null || str.trim().equals(""))
return "http://s3.amazonaws.com/37assets/svn/765-default-avatar.png";
try {
URL url = new URL(str);
connection = (HttpURLConnection) url.openConnection();
connection.setDoOutput(true);
InputStream stream = url.openStream();
BufferedImage img = ImageIO.read(stream);
BufferedImage newImg = Scalr.resize(img, Mode.FIT_TO_WIDTH, size, Scalr.OP_ANTIALIAS);
Iterator<ImageWriter> writerIt = ImageIO.getImageWritersByFormatName("jpeg");
if (writerIt.hasNext() ) {
ImageWriter writer = writerIt.next();
FileOutputStream f = new FileOutputStream(path + leg_id + ".jpg");
ImageOutputStream ios = ImageIO.createImageOutputStream(f);
writer.setOutput(ios);
ImageWriteParam writeParam = writer.getDefaultWriteParam();
writeParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
writeParam.setCompressionQuality(0.9f);
writer.write(null, new IIOImage(newImg, null, null), writeParam);
f.close();
writer.dispose();
ios.close();
}
stream.close();
connection.disconnect();
return path + leg_id + ".jpg";
} catch (MalformedURLException e) {e.printStackTrace();System.exit(0);
} catch (IOException e) {};
return "http://s3.amazonaws.com/37assets/svn/765-default-avatar.png";
}