Image oder GridControl?

bladepit

Bekanntes Mitglied
Hallo zusammen,

ich habe ein technologisches Problem und hoffe ihr könnt mir weiter helfen.

Also ich bin grade an einem Projekt welches eine Heatmap darstellen muss. Dazu habe ich ein Control übernommen was selber geschrieben wurde von einem vorherigen Mitarbeiter.

Die Heatmap soll 10000 * 500 Punkte darstellen können. Das ist ne ganze Menge und schwer zu realisieren. Mein Speicher läuft akutell bei 2000 * 500 schon über. Aber ich glaube das Problem identifiziert zu haben.

In der Heatmap wird für jeden Punkt (Kachel) ein Image generiert und gespeichert. Wie groß sind die Images im Speicher? Das dürfte denk ich mal mein Speicherfresser sein.

Gibt es für Java denn sowas wie GridControl oder ähnliches mit dem ich die Map besser darstellen könnte.

Habt ihr schonmal Heatmaps dargestellt und wenn ja womit?

Gruß

bladepit
 

Michael...

Top Contributor
In der Heatmap wird für jeden Punkt (Kachel) ein Image generiert und gespeichert. Wie groß sind die Images im Speicher? Das dürfte denk ich mal mein Speicherfresser sein.
Wenn das so ist, ist das sicherlich ein Fehler und die Ursache des Speicherproblems.
Wieviele Zustände kann denn so ein Punkt annehmen? Sicherlich keine 5 Mio. Es sollten nur soviele Bilder erzeugt/geladen werden, wie für die Darstellung der unterschiedlichen Zustände notwendig sind.

Wenn man die Zustände der Kacheln in einem byte bzw. int Array verwaltet kommt man auf einen Speicherbedarf von 5 bzw. 20 MB plus 100 (angenommene) unterschiedliche Zustände die durch 100 unterschiedliche Bilder (vermutlich etwas überdimensionierte Abschätzung 1MB pro Bild) repräsentiert werden ==> ergibt 120 MB (wobei ein Kachelbild vermutlich nur wenige KB groß sein dürfte)
 

bladepit

Bekanntes Mitglied
Ja es gibt zwei Werte die durch die Heatmap repräsentiert werden sollen. Und da gibt es vll maximal 300 Zustände. Wenn man die Zustände so definiert das diese sich unterscheiden mit Zahl und Farbe. Wenn man nur Farbe nehmen würde dann sind das nochmal weniger Zustände.

Aber ich könnte dann trotzdem ein Image generieren oder? Problem ist halt das ich nicht das ganze umschreiben will. Die Arbeit sich da rein zu denken war schon extrem hoch ohne Kommentare...:-(
 

bladepit

Bekanntes Mitglied
Hallo,

ich hab dadurch den Speicher was drücken können aber nicht genug. Bei einer 340 * 349 Heatmap hab ich dann 118660 Punkte. Jedes davon ist dann ja immer noch ein Image welches referenziert wird.

Nun ist meine Map auch ein JComponent und ich nutze die paintComponent Methode um die Punkte zu zeichnen.

Gibt es denn vll eine andere bessere Lösung als ein JComponent und dies selber zu zeichnen? Vll ein anderes Control etc?

Gruß

bladepit
 

Michael...

Top Contributor
Jedes davon ist dann ja immer noch ein Image welches referenziert wird.
Hoffentlich referenzieren diese 118660 Punkte nicht auf 118660 Image Objekte.
Nun ist meine Map auch ein JComponent und ich nutze die paintComponent Methode um die Punkte zu zeichnen.

Gibt es denn vll eine andere bessere Lösung als ein JComponent und dies selber zu zeichnen? Vll ein anderes Control etc?
Hangt davon ab, wie der Prozess ausschaut und wie oft wie viele Daten aktualisiert werden. Eventuell wäre es besser diese "HeatMap" auf ein BufferedImage zu zeichnen und auf der Komponente nur diese Bild anzuzeigen.
 

bladepit

Bekanntes Mitglied
Ok....

Ich hab grade JHeatChart gefunden. Das macht ein BufferedImage. Da bleibt ich bei ner bestimmten Größe der Kacheln auch bei 10000 * 400 unter 1 GB aber das braucht einfach mal 15 min.

Ich weiß nicht ob das wirklich die Lösung ist. Ich würde es nehmen wenn es nur eine Minute brauchen würde aber das ist ein Traum.

Leider gibt mir unser Auftraggeber genau sowas vor.

Mittels JOGL (mit dem ich 0 Erfahrungen hab) das selber zu zeichnen ist doch auch blödsinn oder?
 
B

bERt0r

Gast
Ist es nicht so dass bei einer Heatmap die Farbe der einzelnen "Kacheln" durch ihren Wert bestimmt wird? Ein Image für jede solche Kachel zu generieren ist doch unnötig, wenn dann interessiert dich doch nur das Bild der gesammten Heatmap nicht eines von einzelnen Kacheln. Bei der Menge an "Kacheln" sollte man diese am besten einfach als double Wert ausdrücken, kein Objekt drumherumschreiben wenns nicht unbedingt nötig ist.

Wenn du jetzt irgendwelche vordefinierte Bilder hast, und dann z.B eine Kachel mit Wert 0 durch einen Smiley darstellen willst, solltest du vorher alle Bilder in eine Collection z.b HashMap oder ArrayList laden und dann, wenn du diese Kachel bearbeitest, das Bild aus der Collection holen.
 

Michael...

Top Contributor
15 min sind ganz schön lange, da lässt sich sicherlich noch was optimieren ;-)
Ich habe jetzt mal nachgeschaut was eine Heatmap überhaupt ist. Bei den Bildern, die ich gesehen habe wird ja nur das Bild einer Website farblich überlagert. Müssen diese Kacheln denn tatsächlich Images sein oder kann man nicht einfach die Pixel des Bildes entsprechend der Werte einfärben?
Bei meinen Test habe ich ein BufferedImage 500x10000 anhand von 5 Mio Zufallswerten pixelweise eingefärbt. Hat nur ein paar Sekunden gedauert.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Image bewegt sich nicht nach Klicken auf Button Allgemeine Java-Themen 15
Mozart53 JLabel nur meinen Text verschieben ohne Image Allgemeine Java-Themen 3
Y Wie bekomme ich durch getImage an das Image heran? Allgemeine Java-Themen 1
J jsch direktes streamen in ein image Allgemeine Java-Themen 11
A 2D-Grafik Einfachster Ansatz, um sich wiederholende Figur in einem 2D-Image zu erkennen Allgemeine Java-Themen 1
T 2D-Grafik Chart als Image erstellen Allgemeine Java-Themen 3
G Image in Shape wandeln Allgemeine Java-Themen 1
T Swing Image rotieren Allgemeine Java-Themen 1
I nach Image Load in ListView, kann Ordner nicht mehr gelöscht werden Allgemeine Java-Themen 1
C pfad vom Image ausgeben lassen Allgemeine Java-Themen 5
Bananabert Swing jtree : image als user object Allgemeine Java-Themen 2
M Image auslesen Allgemeine Java-Themen 2
G Pixelanzahl aus Raw Image Datei Allgemeine Java-Themen 1
H OCR und Image Processing Allgemeine Java-Themen 4
M Image für PDF nicht verfügbar - Runnable .jar Allgemeine Java-Themen 3
S BLOB Image in JSP anzeigen Allgemeine Java-Themen 5
BRoll Image RGB Werte auslesen und vergleichen Allgemeine Java-Themen 8
K Image zu BufferedImage konvertieren Allgemeine Java-Themen 9
K Image beim catchen ist immer null Allgemeine Java-Themen 9
X Image Processing libary für JavaSE und Android Allgemeine Java-Themen 2
Crashbreaker RCP-View Image öffnen und darstellen Allgemeine Java-Themen 7
S IMAGE ARRAY laden Allgemeine Java-Themen 6
B Image Thinning Allgemeine Java-Themen 3
A Input/Output Buffered Image zu Byte Array und zurück konvertieren Allgemeine Java-Themen 4
F Datentypen Floppy-Image-Dateisystem Allgemeine Java-Themen 5
F Image - Ausschnitt bekommen Allgemeine Java-Themen 3
J Teil eines Image/ImageIcon zeichnen Allgemeine Java-Themen 2
N Unable to convolve src image Allgemeine Java-Themen 7
H image in jtextarea/JLabel einbinden... Allgemeine Java-Themen 4
Aigu Bilderkennung / Image Analysis Allgemeine Java-Themen 2
M Nochmal I-Frame zu Image Allgemeine Java-Themen 4
M JPEG Image komprimieren Allgemeine Java-Themen 2
M Probleme mit Image Extraction aus PDF Allgemeine Java-Themen 2
V Image laden - URL über ClassLoader ermitteln Allgemeine Java-Themen 2
G sun.awt.image.OffScreenImage Serializable machen Allgemeine Java-Themen 5
T Image in gif umwandeln Allgemeine Java-Themen 14
G itext größe von image Allgemeine Java-Themen 2
T JPanel to Image? Allgemeine Java-Themen 6
K Image Resizer Allgemeine Java-Themen 4
D Image runterscalieren, aber schlechte Quali? Allgemeine Java-Themen 3
L Buffered Image teilweise zeichnen Allgemeine Java-Themen 6
P Image erzeugen Allgemeine Java-Themen 7
B Image libraries Allgemeine Java-Themen 3
MQue Image über Komponente Allgemeine Java-Themen 3
P Image auf JPanel auf JFrame Allgemeine Java-Themen 3
P Image auf einem Panel mit null-Layout Allgemeine Java-Themen 8
E Image unterscheiden Allgemeine Java-Themen 16
E Image auf einem JLabel darstellen Allgemeine Java-Themen 3
F BufferedImage -> Image Allgemeine Java-Themen 4
E Wie bekomme ich mein Image in das Fenster Allgemeine Java-Themen 2
T Muster/Zeichen/Texterkennung auf einem Image Allgemeine Java-Themen 9
L Linien, Recktecke und Elipsen zeichnen ohne Image Allgemeine Java-Themen 2
T Disk Image Library (iso,mdf,nrg,bin) Allgemeine Java-Themen 6
S KeyListener! Image Problem! Allgemeine Java-Themen 2
S Image als Background Allgemeine Java-Themen 5
B Image(png) versenden Allgemeine Java-Themen 3
N Image -> cropImage Allgemeine Java-Themen 3
T Image mithilfe von DirectColorModel und Pixel erstellen Allgemeine Java-Themen 3
G Image in der Größe ändern Allgemeine Java-Themen 2
C probleme mit image Allgemeine Java-Themen 4
C Pixelfarbe aus einem image auslesen Allgemeine Java-Themen 6
M Image Skalieren Allgemeine Java-Themen 23
D ByteArray für Image-Icon laden. Allgemeine Java-Themen 4
T iso datei (Image) mit Java einlesen und Inhalt entpacken Allgemeine Java-Themen 3
O Image mit transparenten farben wie bei *.GIF ? Allgemeine Java-Themen 3
B Image#getScaledInstance & Graphics2D#drawImage ClassCast Allgemeine Java-Themen 3
H Speicher freigeben klappt nicht bei Image Objekten, warum? Allgemeine Java-Themen 8
H Skalieren von Image -> java.lang.OutOfMemoryError - WARUM Allgemeine Java-Themen 18
T Auf ein Image geklickt Allgemeine Java-Themen 13
J ISO image erzeugen Allgemeine Java-Themen 3
J Wie mache ich den Hintergrund einer Image durchsichtig? Allgemeine Java-Themen 7
G Aus JPanel Image Hohlen Allgemeine Java-Themen 3
D BufferedReader in image umwandeln Allgemeine Java-Themen 3
S Image Datei serializieren Allgemeine Java-Themen 3
G JFrame nimmt mein Image nicht Allgemeine Java-Themen 2
F Image als GIF oder JPEG abspeichern Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben