Image laden sehr langsam

Ranjo

Mitglied
Mein Problem ist , dass folgender Code zum laden und Anzeigen der Bilder sehr lange bei der Ausführung dauert.
Ca 300 Bilder in der DB bei einer größe von 20-100kb pro Bild.
Das laden dauert knapp 10 sek.
Kann man das irgendwie beschelunigen?

Gruß
Spaceman

Java:
            File file = new File("img_fm/"+model.getFilmData().elementAt(i).getName()+".jpg");
            ImageIcon icon;
            if(file.exists())
            {
                 icon = new ImageIcon("img_fm/"+model.getFilmData().elementAt(i).getName()+".jpg");
            }
            else
            {
                icon = new ImageIcon("sources/no_pic.gif");
            }
            
            icon.setImage(icon.getImage().getScaledInstance(100, 150, 0));
            btns.elementAt(i).setIcon(icon);
 

Stelufl

Mitglied
Ich bin zwar noch relativ neu in der Programmierung und habe keine Erfahrung, aber mein logischer Menschenverstand sagt mir, x Zugriffe auf die Platte dauern auch x * Zugriffszeit * (Datengröße*FaktorJeKB)

Sprich wenn du 300 Pics lädst und die Zugriffszeit je Pic schon 15ms dauert, dann sind alleine das schon 4,5 Sekunden.


Grüße
 
G

Gast2

Gast
Java:
            File file = new File("img_fm/"+model.getFilmData().elementAt(i).getName()+".jpg");
            ImageIcon icon;
            if(file.exists())
            {
                 icon = new ImageIcon("img_fm/"+model.getFilmData().elementAt(i).getName()+".jpg");
            }
            else
            {
                icon = new ImageIcon("sources/no_pic.gif");
            }
            
            icon.setImage(icon.getImage().getScaledInstance(100, 150, 0));
            btns.elementAt(i).setIcon(icon);


Die Frage ist ob dein else Zweig viel Sinn macht, jedes mal dafür ein neues Image zu laden. Allgemein ist bei Bilder bzw. allg. Resourcen immer ein Caching oder eine Registry sinnvoll, damit Bilder nicht mehrfach erstellt werden

300 Bilder skalieren dauert eben dann seine Zeit. Die Frage ist zeigst du alles gleichzeitig an? Ansonsten kannst du das skalieren in einen Background Job auslagern.
 

Ranjo

Mitglied
Hey, erstmal danke für die Antworten.

Wenn ich das skalieren weglasse ist es zeitlich kaum fühlbar.
Das mit dem Else-Block werde ich mal ausprobieren.
Die 300 Bilder werden dann in einem Scrollpanel angezeigt und auf dem ersten Blick sind halt nur die ersten 10 oder 20 Bilder zu sehen, wie kann ich das auslagern? Ich denke du willst auf Threads hinaus?
 
G

Gast2

Gast
Hey, erstmal danke für die Antworten.

Wenn ich das skalieren weglasse ist es zeitlich kaum fühlbar.
Das mit dem Else-Block werde ich mal ausprobieren.
Die 300 Bilder werden dann in einem Scrollpanel angezeigt und auf dem ersten Blick sind halt nur die ersten 10 oder 20 Bilder zu sehen, wie kann ich das auslagern? Ich denke du willst auf Threads hinaus?

Gibt mehrere Möglichkeiten je nachdem schwerer umzusetzen.
1) SwingWorker verwenden und einen Ladebalken während des Laden anzeigen
2) SwingWorker verwenden und nur die geladenen Bilder dann nach und nach anzeigen und solange ein bild nicht geladen ist ein warten bild anzeigen. Sobald es dann fertig geladen ist sieht es der User sofort.
3)Die ersten 20 Bilder laden und beim scorllen die nächsten 20 Bilder laden usw. --> schwiergiste Variante, da Swing nichts für lazy loading parat hat.

EDIT: Wie gesagt Caching wäre evt. auch sinnvoll, dann dauert das 1. Laden "lang", aber die nachfolgenden Anzeigen eventuell nicht mehr.
 
Zuletzt bearbeitet von einem Moderator:

Ranjo

Mitglied
Gibt mehrere Möglichkeiten je nachdem schwerer umzusetzen.
1) SwingWorker verwenden und einen Ladebalken während des Laden anzeigen
2) SwingWorker verwenden und nur die geladenen Bilder dann nach und nach anzeigen und solange ein bild nicht geladen ist ein warten bild anzeigen. Sobald es dann fertig geladen ist sieht es der User sofort.
3)Die ersten 20 Bilder laden und beim scorllen die nächsten 20 Bilder laden usw. --> schwiergiste Variante, da Swing nichts für lazy loading parat hat.

Einen Ladebalken habe ich bereits implementiert, die Klasse SwingWorkerist mr bishe rnicht bekannt.
Danke für den Tipp, werde mich mal damit versuchen und mich dann melden!
 

Ranjo

Mitglied
Gibt mehrere Möglichkeiten je nachdem schwerer umzusetzen.
1) SwingWorker verwenden und einen Ladebalken während des Laden anzeigen
2) SwingWorker verwenden und nur die geladenen Bilder dann nach und nach anzeigen und solange ein bild nicht geladen ist ein warten bild anzeigen. Sobald es dann fertig geladen ist sieht es der User sofort.
3)Die ersten 20 Bilder laden und beim scorllen die nächsten 20 Bilder laden usw. --> schwiergiste Variante, da Swing nichts für lazy loading parat hat.

EDIT: Wie gesagt Caching wäre evt. auch sinnvoll, dann dauert das 1. Laden "lang", aber die nachfolgenden Anzeigen eventuell nicht mehr.

Super, mit SwingWorker klappt es wunderbar!

Danke Dir!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K JavaFX Bildergalerie aus Image Ordner laden AWT, Swing, JavaFX & SWT 3
N Swing Image aus Web laden und in Icon umwandeln AWT, Swing, JavaFX & SWT 4
C Image laden und Speichern - Image wird auf JPanel nicht angezeigt AWT, Swing, JavaFX & SWT 4
G Image laden aber nicht in Applet Klasse AWT, Swing, JavaFX & SWT 2
S Problem beim Image laden AWT, Swing, JavaFX & SWT 4
T Image laden im Panel ? AWT, Swing, JavaFX & SWT 16
R Image in JPanel/JLabel laden? AWT, Swing, JavaFX & SWT 11
S Laden eines gif oder jpg in ein Image AWT, Swing, JavaFX & SWT 3
XWing Swing Image anzeigen und probleme mit klassen AWT, Swing, JavaFX & SWT 3
Telisti Javafx Image wird nicht richtig integiert AWT, Swing, JavaFX & SWT 8
JMölleri Swing Image wird unscharf dargestellt AWT, Swing, JavaFX & SWT 2
L AWT .gif image transparent machen AWT, Swing, JavaFX & SWT 3
kodela angezeigtes Image entfernen AWT, Swing, JavaFX & SWT 1
R Java, GUI, Hintergrundbild, Image, AWT, Swing, JavaFX & SWT 4
R Swing Background Image in JFrame implementieren AWT, Swing, JavaFX & SWT 40
T Swing Buffered Image anzeigen AWT, Swing, JavaFX & SWT 45
L Image kann nicht gefunden werden AWT, Swing, JavaFX & SWT 1
S Stretch Image in ImageView AWT, Swing, JavaFX & SWT 4
Fiedlerdan Image-Pfad Probleme nach Export aus Eclipse AWT, Swing, JavaFX & SWT 31
L JavaFX Image mit Blureffect AWT, Swing, JavaFX & SWT 2
Bluedaishi JavaFX Button Image aus Datenbank AWT, Swing, JavaFX & SWT 13
F javaxt.io.Image getBufferedImage liefert null AWT, Swing, JavaFX & SWT 1
Yjuq JavaFX Custom Control - Image resize AWT, Swing, JavaFX & SWT 0
D Java FX Image in einer Webanwendung annotieren und den Bereich ausschneiden AWT, Swing, JavaFX & SWT 0
I Bild über FXML (ImageView, Image) anzeigen AWT, Swing, JavaFX & SWT 1
T Image Loader lädt Bild nicht AWT, Swing, JavaFX & SWT 10
J 2D-Grafik Background Image Klasse AWT, Swing, JavaFX & SWT 14
Q AWT TicTacToe Image auf Button hinzufügen AWT, Swing, JavaFX & SWT 5
BreakdownBob Swing JLabel verschwindet hinter Image AWT, Swing, JavaFX & SWT 2
L JavaFX leeres weißes Image - javafx.scene.image.Image AWT, Swing, JavaFX & SWT 2
L JavaFX Image im ImageView auf Scroll Listener reagieren AWT, Swing, JavaFX & SWT 5
Naxon89 JavaFX Image wird nicht korrekt geladen AWT, Swing, JavaFX & SWT 3
W Javafx - Image soll sich mit der Camera mitbewegen AWT, Swing, JavaFX & SWT 1
B Graphics to Image AWT, Swing, JavaFX & SWT 3
L Image in anderes kopieren AWT, Swing, JavaFX & SWT 0
T Swing Image wird nicht geladen AWT, Swing, JavaFX & SWT 1
S JavaFX Image Skalierung in Scrollpane, Scrollpane resized sich nicht AWT, Swing, JavaFX & SWT 5
I Image im PopupMenu vom SystemTray AWT, Swing, JavaFX & SWT 8
F JavaFX Position von Image angeben/verändern AWT, Swing, JavaFX & SWT 2
M JavaFX Image View Würfel berechnen AWT, Swing, JavaFX & SWT 3
L JButton mit Image AWT, Swing, JavaFX & SWT 5
F Swing Image einem Button hinzufügen AWT, Swing, JavaFX & SWT 5
B Resize von Image nach Resize von Button AWT, Swing, JavaFX & SWT 1
T Image aus "nicht-src-ordner" AWT, Swing, JavaFX & SWT 5
vodkaz (javafx) Image Problem AWT, Swing, JavaFX & SWT 2
M Image in JTable einfügen AWT, Swing, JavaFX & SWT 9
M Image aus MS Access anzeigen lassen AWT, Swing, JavaFX & SWT 9
H Image im Array per Knopfdruck ändern AWT, Swing, JavaFX & SWT 6
H Swing JList/JTable mit JButton, JTextField, Image, JComboBox und JLable AWT, Swing, JavaFX & SWT 2
P Image oder Icon auf Tooltip zeichnen AWT, Swing, JavaFX & SWT 4
G JavaFX Image vergrößern AWT, Swing, JavaFX & SWT 5
U Image mit Zeichenbereich rotieren AWT, Swing, JavaFX & SWT 3
P Speicherproblem SWT.Image in Nebula-Gallery AWT, Swing, JavaFX & SWT 3
L JavaFX: Bild in Image einlesen AWT, Swing, JavaFX & SWT 11
D Image soll langsam sichtbar werden AWT, Swing, JavaFX & SWT 4
D JLabel Image ausrichten AWT, Swing, JavaFX & SWT 2
Z Flackern trotz Offscreen Image / Doublebuffer, (+ Frage zu Pixelvergleich) AWT, Swing, JavaFX & SWT 25
bluerob Problem beim Image zeichnen via andere Klasse AWT, Swing, JavaFX & SWT 7
H Image Icon ersetzen AWT, Swing, JavaFX & SWT 8
I Image Button AWT, Swing, JavaFX & SWT 4
U IntBuffer zum Image konvertieren. AWT, Swing, JavaFX & SWT 9
S Eigene JComponent Image zeichnen AWT, Swing, JavaFX & SWT 3
T 2D-Grafik Slideshow (DoubleBuffering und Image transformieren/bewegen) AWT, Swing, JavaFX & SWT 6
K Swing Warum bleibt das Image immer gleich AWT, Swing, JavaFX & SWT 4
L Swing dynamisches Image-Panel in Layout einbinden AWT, Swing, JavaFX & SWT 10
D Image.getScaledInstance() vs. Netzwerkverbindung??? AWT, Swing, JavaFX & SWT 2
reibi SWT Image viewer AWT, Swing, JavaFX & SWT 2
lumo SWT Image funktion auf ImageDaten AWT, Swing, JavaFX & SWT 9
A Applet .gif in applet Image nicht animiert angezeigt AWT, Swing, JavaFX & SWT 4
M Image wird nicht neugezeichnet nach dem Wechsel AWT, Swing, JavaFX & SWT 2
lumo SWT Image Pattern AWT, Swing, JavaFX & SWT 5
P Image mehrfach in ein BufferedImage zeichnen AWT, Swing, JavaFX & SWT 7
M Swing Image in JPanel als Componente AWT, Swing, JavaFX & SWT 2
P nicht sichtbares JPanel / JFrame als Image speichern AWT, Swing, JavaFX & SWT 3
T Image skaliert in Variable speichern AWT, Swing, JavaFX & SWT 6
S Image wird nicht (immer) in paintComponent gezeichnet? AWT, Swing, JavaFX & SWT 6
S Swing Image wird nicht geladen AWT, Swing, JavaFX & SWT 2
0 Mousecurser mit Image hinterlegen AWT, Swing, JavaFX & SWT 4
B Swing Drag&Drop mit Feedback (Image am Mauszeiger) AWT, Swing, JavaFX & SWT 7
N Java Choice Bilderausgabe - images - - image - AWT, Swing, JavaFX & SWT 2
D iText PdfPCell mit Image AWT, Swing, JavaFX & SWT 3
S 2D-Grafik Icon in Image (System Icons) AWT, Swing, JavaFX & SWT 2
S Button mit Image AWT, Swing, JavaFX & SWT 7
A Skaliertes Image pixelweise bearbeiten AWT, Swing, JavaFX & SWT 6
L Swing Image zur Laufzeit verändern AWT, Swing, JavaFX & SWT 6
F SWT GC drawText auf halbtransparentem Image AWT, Swing, JavaFX & SWT 21
G Swing JEdtitorPane und HTML Image Seite AWT, Swing, JavaFX & SWT 2
C Image mit Graphics2D zeichnen AWT, Swing, JavaFX & SWT 9
C Image performant skalieren AWT, Swing, JavaFX & SWT 5
D SWT Image Farbtiefe AWT, Swing, JavaFX & SWT 2
L Swing Auf unabhängiges Image-Objekt zeichnen AWT, Swing, JavaFX & SWT 8
lumo SWT Composite + Image + zeichnen AWT, Swing, JavaFX & SWT 4
V Ein Image als Button (nicht mit JButton(Icon)) AWT, Swing, JavaFX & SWT 5
D Image Viewer gesucht AWT, Swing, JavaFX & SWT 5
Kr0e Image schärfen AWT, Swing, JavaFX & SWT 2
R Bild drehen UND skalieren (Image bzw BufferedImage) AWT, Swing, JavaFX & SWT 5
T Image auf Image zeichnen AWT, Swing, JavaFX & SWT 2
E Warum ist offscreen (mit Image) schneller? AWT, Swing, JavaFX & SWT 11
G Swing Image speichern / 0 Byte AWT, Swing, JavaFX & SWT 7
H Image abspeichern AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben