In swing ben ik bezig aan een klein programma. De bedoeling is dat je vanuit je explorer/iView/finder of Iphoto je foto's sleept naar de applicatie naar een bepaald JPanel. Je hebt 8 bestaande JPanels (deze stellen elk een categorie voor).

In de foto zie je maar één JPanel. de andere komen hier onder te staan
Nu is elke foto ongeveeer 3 à 5 MB groot. Deze wordt verkleind weergeven door de volgende regels code:
Uiteraard was ik na het toevoegen van 5 foto's al in de problemen:
[code]
Exception in thread "Image Fetcher 0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "Image Fetcher 0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "Image Fetcher 0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "Image Fetcher 0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "Image Fetcher 0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "Image Fetcher 0" java.lang.OutOfMemoryError: Java heap space
[code]
Nu kan ik java wel starten maar met een grotere Heap memory. Uiteraard lost dit geen problemen op, want als je met 5 foto's al tekort komt voor enkele mb.. laat staan dat ik dan 100 à 300 foto's kan inladen!
mijn oplossing:
Misschien moet ik een temp map maken, al de thumnails wegschrijven en de orginele uit het geheugen laden: nadeel: schrijf access
Misschien moet ik de thumbs in het geheugen laten staan en de orginele uit het geheugen gooien. alleen bij het openen van een specifieke foto kan ik de hele foto weer inladen
Ik heb hier totaal geen ervaring mee dus kan iemand andere oplossingen / strategiën voorstellen en ook al tips geven om mij hier op weg te zetten
(want de thumbnail in het geheugen laten en da image verwijderen weet ik niet echt hoe ik dat moet doen? moet je dan manueel je gb.collect doen?)
In de foto zie je maar één JPanel. de andere komen hier onder te staan
Nu is elke foto ongeveeer 3 à 5 MB groot. Deze wordt verkleind weergeven door de volgende regels code:
code:
1
2
3
4
5
| public void addImage(Image image){
Image small =image.getScaledInstance(100,100,Image.SCALE_FAST);
JLabel label = new JLabel(new ImageIcon(small));
add(label);
} |
Uiteraard was ik na het toevoegen van 5 foto's al in de problemen:
[code]
Exception in thread "Image Fetcher 0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "Image Fetcher 0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "Image Fetcher 0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "Image Fetcher 0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "Image Fetcher 0" java.lang.OutOfMemoryError: Java heap space
Exception in thread "Image Fetcher 0" java.lang.OutOfMemoryError: Java heap space
[code]
Nu kan ik java wel starten maar met een grotere Heap memory. Uiteraard lost dit geen problemen op, want als je met 5 foto's al tekort komt voor enkele mb.. laat staan dat ik dan 100 à 300 foto's kan inladen!
mijn oplossing:
Misschien moet ik een temp map maken, al de thumnails wegschrijven en de orginele uit het geheugen laden: nadeel: schrijf access
Misschien moet ik de thumbs in het geheugen laten staan en de orginele uit het geheugen gooien. alleen bij het openen van een specifieke foto kan ik de hele foto weer inladen
Ik heb hier totaal geen ervaring mee dus kan iemand andere oplossingen / strategiën voorstellen en ook al tips geven om mij hier op weg te zetten
(want de thumbnail in het geheugen laten en da image verwijderen weet ik niet echt hoe ik dat moet doen? moet je dan manueel je gb.collect doen?)
[ Voor 3% gewijzigd door Verwijderd op 01-03-2006 18:18 . Reden: layout ]