OutOfMemoryError bei Bildverarbeitung [SOLVED]
Hallo allerseits,
ich habe mich gerade mit Java an ein eues Programm gewagt und dor gleich einen Dämpfer erhalten:
Ich will ein einfaches Programm, dass mir alle Bilder in einem Verzeichnis als Thumbnail anzeigt, bei dem ich die Bilder anwählen kann und die angewählen Bilder dann verschieben (lassen) kann. Soweit hört sich das einfach an. Das Problem sind die Thumbnails:
Ich lade zunächst das reguläre Image als BufferedImage in Java, dann wird mittels getScaledInstance ein Thumbnail erzeugt. Das braucht schon mal recht viel Rechenzeit. Die Thumbnails (ca. 300x300) werden dann nicht gelöscht, sondern bleiben natürlich im Speicher, weil ich zum Zeichnen der Bilder auf JComponent-en die natürlich noch brauche. Wenn ich jetzt einige größere Dateien (halt mit der Spiegelrefelx gemacht) reinlade, kommt der OutOfMemoryError. Und zwar bei schon unter 30 Bildern/Thumbnails. Kann das sein?
Ich meine: Die unkomrimierten Bilder haben ca 2,5 MB. Da kämen bei 30 Bilder ca 64MB raus, wo ja auch die Grenze (standardmäßig) des Java-Heaps ist.
Also sehe ich 2 Möglichkeiten:
1. die Thumbails sind gar nicht umgerechnet sondern nur skaliert. Dann muss ich eine möglichkeit suchen, diese umzurechnen. Kann mir da jemand was zu sagen?
2. Ich muss meine GUI verbessern, so dass nur die aktuell angezeigten Bilder gerendert werden. Da weiß ich aber definitiv nicht, wo ich zu suchen anfangen soll. Ideen?
Vielen Dank
Christian
Hallo allerseits,
ich habe mich gerade mit Java an ein eues Programm gewagt und dor gleich einen Dämpfer erhalten:
Ich will ein einfaches Programm, dass mir alle Bilder in einem Verzeichnis als Thumbnail anzeigt, bei dem ich die Bilder anwählen kann und die angewählen Bilder dann verschieben (lassen) kann. Soweit hört sich das einfach an. Das Problem sind die Thumbnails:
Ich lade zunächst das reguläre Image als BufferedImage in Java, dann wird mittels getScaledInstance ein Thumbnail erzeugt. Das braucht schon mal recht viel Rechenzeit. Die Thumbnails (ca. 300x300) werden dann nicht gelöscht, sondern bleiben natürlich im Speicher, weil ich zum Zeichnen der Bilder auf JComponent-en die natürlich noch brauche. Wenn ich jetzt einige größere Dateien (halt mit der Spiegelrefelx gemacht) reinlade, kommt der OutOfMemoryError. Und zwar bei schon unter 30 Bildern/Thumbnails. Kann das sein?
Ich meine: Die unkomrimierten Bilder haben ca 2,5 MB. Da kämen bei 30 Bilder ca 64MB raus, wo ja auch die Grenze (standardmäßig) des Java-Heaps ist.
Also sehe ich 2 Möglichkeiten:
1. die Thumbails sind gar nicht umgerechnet sondern nur skaliert. Dann muss ich eine möglichkeit suchen, diese umzurechnen. Kann mir da jemand was zu sagen?
2. Ich muss meine GUI verbessern, so dass nur die aktuell angezeigten Bilder gerendert werden. Da weiß ich aber definitiv nicht, wo ich zu suchen anfangen soll. Ideen?
Vielen Dank
Christian
Zuletzt bearbeitet: