Schnelleres Einlesen von Images

Kenan89

Bekanntes Mitglied
Hallo Leute,

ich habe ein Programm geschrieben, der ein Bild anzeigt UND auf einem weiteren Panel alle weiteren Bilder, die sich im gleichen Verzeichnis befinden als Thumbnails darstellt.

Das Problem ist, dass ich bisher nur mit wenigen und kleinen Dateien getestet habe.

Befinden sich viele große Dateien in einem Ordner, dauert erstens das Lesen zu lange (BufferedImage bImg = ImageIO.read(file)) und zweitens kriege ich outOfMemory da die VM wohl kein Speicher mehr hat.

Meine Frage ist hauptsächlich, wie ich das Einlesen beschleunigen kann.

Der Source Ordner befindet sich im Anhang. Es funktioniert, sobald ihr die Variable url in der Klasse Exe im package exe umändert in ein Verzeichnis, wo viele und große Bilder sind. (Ich habe zu Testzwecken große Bilder von einer Landschaft aus Google heruntergeladen und diese einfach kopiert, ist ja egal, wenn es 100x die gleichen Bilder sind. Es geht nur darum dass er die großen Bilder schnell liest.)

Ich wäre auch für eventuelle andere "Tuning-Tipps" dankbar, falls ihr welche entdeckt.

Zusatzinfo: Das Programm ist so keinesfalls fertig, und hat auch mir noch einige bekannte Schwächen, aber vorerst geht es nur um das schnellere Einlesen der Bilder im Verzeichnis. :)

Ich bedanke mich jetzt schon einmal im voraus.

EDIT: Also bei meine Testbedingungen waren:
-75 Bilder zu je 1920 * 1080 jeweils 635 KB
Ein paar weitere Informationen: Das Einlesen der Bilder geschieht in der Klasse Thumbnail im package gui.
 

Anhänge

  • src.7z
    15,3 KB · Aufrufe: 4
Zuletzt bearbeitet:

freez

Top Contributor
Ich kann jetzt nix dazu sagen, wie du dein Programm tunen kannst.

Aber überleg dir mal, wie Windows mit der Thumbnail Ansicht im Explorer umgeht. Beim ersten Lesen erstellt er eine kleine Datenbank im Ordner mit den Miniaturansichten und zeigt diese an. M$ hätte hier das gleiche Problem wie du, wenn die alle Bilder immer in Maximalauflösung einlesen und darstellen. Dann lägen wohl die Hardwareanforderung von Windows bei ca. ein paar 100 GB RAM. Vor allem, wenn man über ne langsame Netzwerkleitung auf den Ordner zugreift merkt man das ganz deutlich.
 

Marco13

Top Contributor
Dauert wirklich das Lesen lange, oder das Runterskalieren? An ersterem könnte man nicht sooo viel machen, am zweiten evtl. schon
 

Kenan89

Bekanntes Mitglied
Mir ist noch eine weitere Möglichkeit eingefallen. Wie wäre es denn wenn man einfach
mehrere Threads erstellt und jedes Thread erstellt ein neues Thumbnail Objekt und fügt es
dem Panel hinzu.
Ansonsten ist es so, dass IMMER darauf gewartet werden muss, dass erst ein Bild hineingeladen worden ist, bevor das nächste geladen wird.

@Datenbank
Davon hatte ich auch mal gelesen gehabt, dass die Bilder wohl gecacht werden können, sodass die Anzeige nur beim ersten Start so lange dauert.
Momentan habe ich nämlich ca 75 große Testbilder in meinem Verzeichnis und für jede braucht java ca 0.5 Sekunden, also ca 33 Sekunden bis alle Bilder geladen sind.

Was genau ist ausserdem mit Datenbank erstellen gemeint? Meinst du eine Tabelle in einer, z.B. postgres, mysql,... Datenbank?

@marco13
leider dauert das Einlesen sehr lange. Skallieren geht relativ flott.
 
S

SlaterB

Gast
ich kann nicht wirklich mitreden, aber falls die Betonung des Stichworts hilft und das Programm es nicht zwingend erfordert (nicht angeschaut):
speziell BufferedImage ist doch glaube ich langsam und größtmöglich,
wandelt das Bild so um dass alles als Buffer zur Bearbeitung jedes Pixels vorliegt

ist das wirklich nötig oder geht auch irgendeine andere sparsamere Darstellung?
zu genauen Formaten, Laden, möchte ich wie gesagt nix vorschlagen
 

freez

Top Contributor
Was genau ist ausserdem mit Datenbank erstellen gemeint? Meinst du eine Tabelle in einer, z.B. postgres, mysql,... Datenbank?

Naja, das ist dir überlassen. M$ legt ein unsichtbares File ab, in dem die Daten liegen. Du kannst natürlich eine embedded Datenbank mit deiner Anwendung starten, in der du deine Daten ablegst. Es muss ja keine SQL DB sein. Du könntest auch ein DB4O nehmen in der du einfach deine Objekte in ein File legst, oder du erstellst dir dein eigenes Dateiformat oder BASE64 Codiert in einem XML File .....
Also du hast da alle Freiheiten, die dir einfallen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Schnelleres Speichern von XML-Daten über URLConnection Allgemeine Java-Themen 4
KeexZDeveoper Schnelleres Rechnen Allgemeine Java-Themen 8
S Bookmark HTML Datei einlesen, alle Links erhalten und manche editieren..? (aktuell JSoup) Allgemeine Java-Themen 4
killig Textdatei einlesen und in HashMap speichern (duplikate entfernen) Allgemeine Java-Themen 12
N Statistische Auswertung von Logfiles (Einlesen, auswerten und grafische Aufbereitung von logfiles) mit Java Allgemeine Java-Themen 9
Master3000 Java Datei mehrmals einlesen Allgemeine Java-Themen 4
R Sonderzeichen aus Datei einlesen und in Datei ausgeben. Allgemeine Java-Themen 17
M Website Quelltext mit Java einlesen Allgemeine Java-Themen 10
L Datein einlesen. Allgemeine Java-Themen 5
S Rückgabe einer HttpURLConnection für eine Seite einlesen bei der man eingeloggt ist..? Allgemeine Java-Themen 5
Thallius Key/Value Table in Klasse einlesen Allgemeine Java-Themen 14
F Datei in String-Array einlesen Allgemeine Java-Themen 8
N Datei Zeilenweise Einlesen, Versteckte Zeichen Allgemeine Java-Themen 5
H Strategy Pattern - changeColor() Methode - input rgd oder hex einlesen Allgemeine Java-Themen 1
T Umlaute in Eclipse einlesen funktioniert nicht Allgemeine Java-Themen 16
Henrithebegiinerofjava Erste Schritte Werte in Eingabefelder einlesen und wiederholen lassen. Allgemeine Java-Themen 3
R .txt Datei einlesen und auf der Konsole ausgeben lassen Allgemeine Java-Themen 11
F Problem beim Einlesen einer Textdatei Allgemeine Java-Themen 12
K Datei (CSV-ähnlich) in Java einlesen & mit teil der Daten Graphen erstellen Allgemeine Java-Themen 9
J Input/Output Word Datei einlesen, verarbeiten und abspeichern Allgemeine Java-Themen 3
K RTF-Dokumente einlesen Allgemeine Java-Themen 1
E Compiler-Fehler Unicode Zeichen einlesen Allgemeine Java-Themen 1
S Variablen String[] Array per schleife in int[] einlesen Allgemeine Java-Themen 8
J Java 8 Datei einlesen Allgemeine Java-Themen 1
S Handschrift einlesen & darauf reagieren OCR Allgemeine Java-Themen 2
K Input/Output String aus einer Datei einlesen und in anderer Datei speichern Allgemeine Java-Themen 20
J Mehrere Wörter getrennt in eine Array einlesen, wie ? Allgemeine Java-Themen 7
R Datei einlesen mit Win7 Allgemeine Java-Themen 8
E Best Practice LaTeX aus Textdateien einlesen und bearbeiten Allgemeine Java-Themen 4
KaffeeFan Bilddatei einlesen und bearbeiten? Allgemeine Java-Themen 5
stylegangsta Mehrere html seiten einer Homepage einlesen und als Textdatei ausgeben Allgemeine Java-Themen 14
F Datei einlesen funktioniert nicht Allgemeine Java-Themen 3
T Geschlossen: Apache POI - Excel einlesen Allgemeine Java-Themen 0
J BufferedReader Datei einlesen Allgemeine Java-Themen 8
L Level einlesen Allgemeine Java-Themen 9
J Jar Datei mit anderer .jar einlesen Allgemeine Java-Themen 4
J Best Practice Java 8 Datei einlesen und verarbeiten Allgemeine Java-Themen 2
M Exceltabelle in Java erstellen und Werte einlesen Allgemeine Java-Themen 32
P Input/Output java.util.Scanner in einer Schleife und Exception-Behandlung: Einlesen einer Zahl Allgemeine Java-Themen 4
B Java - einlesen von Dateien und herausschneiden von XML Dokumenten Allgemeine Java-Themen 5
T xls-Datei per Apache Commons CsvParser einlesen UTF-8 Zeichen russische Zeichen Allgemeine Java-Themen 2
D Wörter aus Datei einlesen Allgemeine Java-Themen 9
D Input/Output Zeilen werden "ignoriert" beim Einlesen aus einer Textdatei Allgemeine Java-Themen 3
Ananaskirsche Input/Output Zeile aus Datei einlesen Allgemeine Java-Themen 10
N Einlesen einer Kostenmatrix, Verarbeitung mit Nearest Neighbor Allgemeine Java-Themen 1
OnDemand String aus html einlesen Allgemeine Java-Themen 2
H Excel Datei einlesen mit Apache POI Allgemeine Java-Themen 1
P Input/Output Datei einlesen per Scanner(f) - mit Cron gehts nicht Allgemeine Java-Themen 1
OnDemand Dateien einlesen und vergleichen Allgemeine Java-Themen 1
AssELAss XML Datei einlesen und anschließen formatiert ausgeben in Datei Allgemeine Java-Themen 0
L einfache Verzinsung mit for-Schleife & Ausschluss von Werten beim Einlesen Allgemeine Java-Themen 5
L Input/Output Datei einlesen und Inhalt in Array schreiben Allgemeine Java-Themen 3
MiMa Umlaute beim Einlesen von Dateinamen Allgemeine Java-Themen 12
C Verzeichnis ins JMenu einlesen Allgemeine Java-Themen 2
M Parameter-Datei einlesen (zeilenweise); Dateiintegrität Allgemeine Java-Themen 7
J TextArea einlesen, mit string Allgemeine Java-Themen 2
I Input/Output .csv Datei einlesen Allgemeine Java-Themen 4
A TXT File einlesen unterschiedliche Zeilenlänge Allgemeine Java-Themen 9
A Input/Output Bild in Java einlesen und analysieren! Allgemeine Java-Themen 8
H Scanner soll einen Inputredirect einlesen, liest aber nicht jedes Wort ein. Allgemeine Java-Themen 3
R String einlesen Allgemeine Java-Themen 8
S Datei in File-Objekt mit UTF-8 einlesen Allgemeine Java-Themen 2
K XML Quelltext Website einlesen?! Allgemeine Java-Themen 3
M File einlesen während es beschrieben wird.. Allgemeine Java-Themen 6
S Spaltenweise einlesen Allgemeine Java-Themen 9
K JAVA Datei einlesen Allgemeine Java-Themen 2
S Input/Output Latin-9 (ISO 8859-15) Textdatei einlesen Allgemeine Java-Themen 2
M Erste Schritte alle xmlFiles in zugehörige pdfFiles einlesen Allgemeine Java-Themen 4
T XML einlesen Allgemeine Java-Themen 14
M Eclipse Stackoverflow beim Einlesen von großen Bilder in kd Baum Allgemeine Java-Themen 15
C Strings in Excel einlesen! Allgemeine Java-Themen 2
K htmlCode einlesen, Speicherüberlauf? zu viel code? Allgemeine Java-Themen 21
F JavaMail - Lokale eMail-Datei einlesen und parsen? Allgemeine Java-Themen 9
K CSV einlesen und speichern Allgemeine Java-Themen 7
Q Text Datei einlesen Allgemeine Java-Themen 27
T Liste mit GregorianCalendar-Objekten in List einlesen, mit Collection sortieren und ausgeben Allgemeine Java-Themen 3
M PDF einlesen mit PDFBox Allgemeine Java-Themen 3
L Benutzereingabe einlesen Allgemeine Java-Themen 5
M Einlesen einer Datei in Java Allgemeine Java-Themen 3
D class Datei einlesen Allgemeine Java-Themen 4
B StringBuilder von File einlesen Allgemeine Java-Themen 8
N Probleme mit Umlauten beim Einlesen Allgemeine Java-Themen 6
M Txt einlesen & Objekte erzeugen Allgemeine Java-Themen 2
E Leerzeichen verschwinden beim Einlesen von .txt-Dateien Allgemeine Java-Themen 5
A JExcel Formel einlesen Allgemeine Java-Themen 2
G Java PDF-Einlesen Allgemeine Java-Themen 9
H excel einlesen und in db schreiben Allgemeine Java-Themen 2
A Datei als Object einlesen und das Object als Singleton instance setzen. Allgemeine Java-Themen 13
B class dateien "einlesen" und objekte erzeugen Allgemeine Java-Themen 6
C Datei als ASCII text einlesen ? Allgemeine Java-Themen 16
M UTF-8 Datein einlesen, Zeichenproblem Allgemeine Java-Themen 9
H Textdatei (1GB) einlesen und verarbeiten Allgemeine Java-Themen 15
D Shortcut statt Datei einlesen Allgemeine Java-Themen 2
E HTML File mit Umlaute einlesen Allgemeine Java-Themen 8
J Konfigurationsdatei einlesen Allgemeine Java-Themen 21
G BigInteger aus DB nach einlesen in JAVA eingeklammert Allgemeine Java-Themen 3
trash mehrzeilige .txt einlesen/formatieren Allgemeine Java-Themen 8
B Applet .java Datei einlesen, anzeigen Allgemeine Java-Themen 3
S Textzeile einlesen Allgemeine Java-Themen 4
S Daten in Array als INT-Wert einlesen - jetzt als csv Datei Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben