E
Eilleen
Gast
Hallo,
hatte für ein Praktikum die Aufgabe ein Programm zu schreiben, welches BMP-Bilder ausliest, darstellt und ein Histogramm erstellt. Zuerst wird der BMP-Header ausgelesen um Daten wie Bildgrösse, Farbtiefe und verwendete Farben, sowie den Anfang des Bilddatenbereich zu sammeln. Anschliessend werden die Pixel in ein 2 dimensionales Array (Bilddaten[hoehe][breite]) geschrieben und dann in der überschriebenen paintComponent(Graphics g) Methode ausgegeben.
Optional kann man sich auch (auf dem Bild, d.h man sieht das Bild weiterhin) das Histogram anzeigen lassen(welches ebenfalls in der paintComponent(Graphics g) Methode dargestellt wird). Das Histogramm lässt sich Stufenlos zoomen um auch die "kleinere" Bereiche zu erkennen.
Das alles ist kein Problem, nur kann man sich gut vorstellen, dass bei einem Bild, mit 800 x 600 Seitenlänge, bei dem 480´000 Pixel einzeln dargestell werden müssen ordentlich Zeit vergeht bis das Bild aufgebaut ist. Wenn man nun das Histogram einblendet und rein- und rauszoomt, wird ständig erst das Bild neu gezeichnet und anschliessend das Histogramm obendrauf. Durch dem enormen Zeitverlusst, ist die Darstellung des Histogramms beim Zoomen immer extrem verzögert.
Meine Idee ist nun, zwei Panels zu verwenden, eins für die Bildausgabe und ein zweites für das Histogramm. Somit müsste das untere Panel(für das bild) nicht ständig neu gezeichnet werden, wenn sich das Histogramm(darüber) ändert. Man müsste also das obere Panel Transparent machen (vieleicht mit set.opaque). Und das schaff ich einfach nicht.
Wenn Ihr 'ne Lösung dazu habt, oder eventuell auch einen ganz anderen Ansatz wäre ich super dankbar.
mfG und schönes WE
Eilleen
hatte für ein Praktikum die Aufgabe ein Programm zu schreiben, welches BMP-Bilder ausliest, darstellt und ein Histogramm erstellt. Zuerst wird der BMP-Header ausgelesen um Daten wie Bildgrösse, Farbtiefe und verwendete Farben, sowie den Anfang des Bilddatenbereich zu sammeln. Anschliessend werden die Pixel in ein 2 dimensionales Array (Bilddaten[hoehe][breite]) geschrieben und dann in der überschriebenen paintComponent(Graphics g) Methode ausgegeben.
Optional kann man sich auch (auf dem Bild, d.h man sieht das Bild weiterhin) das Histogram anzeigen lassen(welches ebenfalls in der paintComponent(Graphics g) Methode dargestellt wird). Das Histogramm lässt sich Stufenlos zoomen um auch die "kleinere" Bereiche zu erkennen.
Das alles ist kein Problem, nur kann man sich gut vorstellen, dass bei einem Bild, mit 800 x 600 Seitenlänge, bei dem 480´000 Pixel einzeln dargestell werden müssen ordentlich Zeit vergeht bis das Bild aufgebaut ist. Wenn man nun das Histogram einblendet und rein- und rauszoomt, wird ständig erst das Bild neu gezeichnet und anschliessend das Histogramm obendrauf. Durch dem enormen Zeitverlusst, ist die Darstellung des Histogramms beim Zoomen immer extrem verzögert.
Meine Idee ist nun, zwei Panels zu verwenden, eins für die Bildausgabe und ein zweites für das Histogramm. Somit müsste das untere Panel(für das bild) nicht ständig neu gezeichnet werden, wenn sich das Histogramm(darüber) ändert. Man müsste also das obere Panel Transparent machen (vieleicht mit set.opaque). Und das schaff ich einfach nicht.
Wenn Ihr 'ne Lösung dazu habt, oder eventuell auch einen ganz anderen Ansatz wäre ich super dankbar.
mfG und schönes WE
Eilleen