S
Singh
Gast
Hallo Leute,
Ich versuche gerade ein kleines Bildbetrachtungsprogramm zu schreiben. Man gibt einen Pfad an und es laed die sich alle im Ordner befindlichen Bilder in das Programm und zeigt sie als Thumbnails an und sobald man auf eines der Thumbnails klickt, wird es oben groesser angezeigt.
Doch jedesmal, wenn ich mehrmals auf verschiedene thumbnails klicken bekomme ich die Fehlermeldung:
java.lang.OutOfMemoryError: Java heap space.
Bei jedem Bild wird diese Methode aufgerufen, um sie in thumbnail-Groessen zu verkleinern und dann anzeigen zu lassen.
Spaeter wenn alles geladen wurde und der User auf eines der Thumbnails(Die Button-Icons sind) klickt, wird das entsprechende Bild erneut etwas groesser im obrigen Panel aufgerufen und genau dann kommt die Fehlermeldung.
Mit diesen beiden Codes wird die Methode jedesmal aufgerufen, wenn ein Bild verkleinert wird oder vergroessert
Hier mal der Code, der den Fehler verursacht:
Ich habe versucht die Objekte danach auf null zu setzen, um sie freizusetzen, doch auch das hat nicht funktioniert.
Irgendeiner eine Idee was man hier machen koennte?
Vielen Dank.
Ich versuche gerade ein kleines Bildbetrachtungsprogramm zu schreiben. Man gibt einen Pfad an und es laed die sich alle im Ordner befindlichen Bilder in das Programm und zeigt sie als Thumbnails an und sobald man auf eines der Thumbnails klickt, wird es oben groesser angezeigt.
Doch jedesmal, wenn ich mehrmals auf verschiedene thumbnails klicken bekomme ich die Fehlermeldung:
java.lang.OutOfMemoryError: Java heap space.
Bei jedem Bild wird diese Methode aufgerufen, um sie in thumbnail-Groessen zu verkleinern und dann anzeigen zu lassen.
Spaeter wenn alles geladen wurde und der User auf eines der Thumbnails(Die Button-Icons sind) klickt, wird das entsprechende Bild erneut etwas groesser im obrigen Panel aufgerufen und genau dann kommt die Fehlermeldung.
Code:
thumbnail = new ImageIcon(resizedImage(icon.getImage(), 33, 33));
Code:
ImageIcon thumbnail = new ImageIcon(resizedImage(ico.getImage(), 800, 550), a);
Mit diesen beiden Codes wird die Methode jedesmal aufgerufen, wenn ein Bild verkleinert wird oder vergroessert
Hier mal der Code, der den Fehler verursacht:
Code:
private Image resizedImage(Image icon2, int w, int h) {
Graphics2D g2;
try {
BufferedImage resizedImg = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
g2 = resizedImg.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2.drawImage(icon2, 0, 0, w, h, null);
g2.dispose();
w = 0;
h = 0;
g2 = null;
return resizedImg;
}
catch(OutOfMemoryError ooME){
return null;
}
}
Ich habe versucht die Objekte danach auf null zu setzen, um sie freizusetzen, doch auch das hat nicht funktioniert.
Irgendeiner eine Idee was man hier machen koennte?
Vielen Dank.