drawImage() hängt!

Status
Nicht offen für weitere Antworten.

Baweg

Mitglied
Hi,
ich hab ein Applet geschrieben mit dem man einen Ordner auswählen kann und alle Bilder aus dem Ordner sollen dann skaliert werden.
Klappt an sich auch, aber bei manchen Bildern bleibt das Applet beim g.drawImage() einfach hängen.
Was kann das sein?
Versuch ich den gleichen Ordner nochmal passiert das wieder bei genau dem gleichen Bild.
Es ist aber nicht z.B. immer das 1. oder 2. Bild, sondern immer total willkürlich.
Es muss irgendwie an bestimmten Bildern liegen, aber die sollte man doch skaliert bekommen...

Code:
private void scale(BufferedImage src, int width, int height,BufferedImage dest)
throws IOException
{
        Graphics2D g = dest.createGraphics();
        g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
        RenderingHints.VALUE_INTERPOLATION_BILINEAR);
        g.drawImage(src, 0, 0, width, height, null);
        g.dispose();
}
 

Baweg

Mitglied
Ne, also ich dacht ja der hängt da einfach fest, aber hab eben einfach mal laufen lassen und festgestellt, dass drawImage() sich nicht aufhängt, sondern einfach nur ewig braucht um das Bild zu zeichnen.
Die meisten Bilder sind in wenigen Sekunden fertig skaliert aber bei manchen dauert es 5-6 Min.
Woran kann das denn liegen!?
 

The_S

Top Contributor
An der Größe des Bildes kombiniert mit dem Skallieralgorithmus in Tateinheit mit der Zielgröße :cool:
 

Baweg

Mitglied
Aber in den Ordnern sind alles Bilder von meiner Digicam mit gleicher Auflösung und in etwa gleicher Größe und die werden alle auf 800x600 skaliert.
Also sollten da doch höchstens geringe Unterschiede in der Berechnungszeit liegen...
 

The_S

Top Contributor
Wen es immer bei den selben Bildern auftritt, liegts wohl an den Bildern ;) . Kannste ja mal überprüfen. Ansonsten kannst du mal versuchen die Bilder vor dem Zeichnen zu skallieren

Code:
g.drawImage(src.getScaledInstance(widht, height), 0, 0, this);
 

Baweg

Mitglied
Ja irgendwas muss ja mit den Bildern sein, aber sind schon so 20% meiner Bilder wo das auftritt.
Mit Photoshop oder so lassen die sich normal skalieren wie alle andern, also scheinen die nicht defekt zu sein.
Mit src.getScaledInstance(widht, height) hab ichs auch schon versucht, das liefer aber leider ein Image zurück und ich brauch ein BufferedImage also musst ich dann weider mit drawImage() ins BufferedImage zeichnen und da trat dann wieder das gleiche Problem auf...
 

The_S

Top Contributor
Öh, du zeichnest doch sowieso auf das BufferedImage, musst doch sonst nichts ändern! Kannst du mal überprüfen ob das skallieren mit scaledInstance (auch mal verschiedene Skallier-Modi ausprobieren) oder das anschließende Zeichnen des bereits skallierten Images so lange dauert!?
 

Baweg

Mitglied
Ja, also es ist immer die drawImage()-Funktion.
src.getScaledInstance(widht, height) funktioniert mit allen Bildern einwandfrei!
 

Baweg

Mitglied
Mehr ist das nicht mehr:

Code:
private void scale(BufferedImage src, int width, int height, BufferedImage dest) 
throws IOException
{
	Image temp = src.getScaledInstance(width,height,BufferedImage.SCALE_SMOOTH);
	dest.getGraphics().drawImage(temp,0,0,null);
}
 

The_S

Top Contributor
Äh, greif mal nicht direkt auf das Graphics-Objekt von BufferedImage zu. Sowas macht man nicht! Ansonsten sehe ich hier auch nichts, was problematisch ist. Evtl. solltest du mal einen anderen Image-Observer verwenden. Aber ansonsten kann ich mir nichts vorstellen
 

Baweg

Mitglied
Wie macht man es ohne direkt auf das Graphics-Objekt zuzugreifen? Also ich habs auch mal so wie im folgenden Code versucht und hatte auch mal den this-Zeiger vom Applet als ImageObserver genommen, aber Ergebnis is genau das gleiche....

Code:
private void scale(BufferedImage src, int width, int height, BufferedImage dest) 
throws IOException
{
	Graphics2D g = dest.createGraphics();
	g.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
        RenderingHints.VALUE_INTERPOLATION_BILINEAR);
	java.awt.Image temp = src.getScaledInstance(width, height, BufferedImage.SCALE_SMOOTH);
	g.drawImage(temp, 0, 0, null);
	g.dispose();
}
 

Wildcard

Top Contributor
Von welcher Menge an Daten reden wir hier?
Ich habe kürzlich einen Image-Scaler geschrieben der klaglos zirka 100 Bilder mit insgesamt etwa 100MB skaliert hat
 

Baweg

Mitglied
Naja die Bilder sind alle so 3-4mb groß. Und für die meisten braucht das Applet zum Skalieren nur so 3-4 Sekunden, aber bei manchen braucht er halt 5-6 Minuten obwohl die Bilder von der gleichen DigiCAm sind und die gleiche Größe haben.

Habe das Applet mal auf der Arbeit ausprobiert mit den gleichen Bildern und hier läuft es perfekt...

Was kann denn da bei meinem Rechner schief laufen?
 

Baweg

Mitglied
Keiner ne Ahnung woran es liegen kann?
Muss doch nen Grund dafür geben dass die so lang braucht manchmal auf meinem Rechner!
 

The_S

Top Contributor
Bilddateien evtl. beschädigt? Also mal mit nem Editor aufmachen und neu abspeichern. Evtl. auch mal mit dem Datentyp handieren ...
 

Baweg

Mitglied
Aber die gleichen Bilder laufen aufm PC auf der Arbeit einwandfrei.
Hab die mal aufn USB-Stick kopiert und gleich vom USB-Stick vom Prog laden lassen, sowohl hier zu Hause als auch auf der Arbeit.
Hier bleibt er hängen, auf der Arbeit dauerts keine Sekunde...
 

Wildcard

Top Contributor
Installier versuchsweise eine aktuellere JRE (6). Möglich das du einen Bug erwischt hast.
Wenn du bereits die JRE 6 installiert hast wirf sie runter und nimm stattdessen JRE 5.
Vielleicht hilft's, vielleicht nicht :wink:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Transparent zeichnen mit drawImage in paintComponent Methode AWT, Swing, JavaFX & SWT 3
J drawImage Fehlersuche AWT, Swing, JavaFX & SWT 5
U drawImage mit EPS AWT, Swing, JavaFX & SWT 0
A Problem mit drawImage AWT, Swing, JavaFX & SWT 1
M Graphics.drawImage von unten nach oben abbilden lassen AWT, Swing, JavaFX & SWT 6
P 2D-Grafik g2.drawImage() langsam AWT, Swing, JavaFX & SWT 110
L Graphics.drawImage() - Output-Größe entspricht nicht Parametern AWT, Swing, JavaFX & SWT 10
L Border verschwindet durch Graphics.drawImage() AWT, Swing, JavaFX & SWT 4
P Swing Skalieren mit DrawImage macht Linien kaputt AWT, Swing, JavaFX & SWT 6
G .ico drawImage AWT, Swing, JavaFX & SWT 5
B drawImage funktioniert nicht AWT, Swing, JavaFX & SWT 4
B drawImage auf JPanel bleibt ohne Auswirkungen AWT, Swing, JavaFX & SWT 9
K Graphics.drawImage() sehr schnell AWT, Swing, JavaFX & SWT 5
M Graphics.drawImage verlangsamt sich plötzlich AWT, Swing, JavaFX & SWT 15
0 AWT Graphics2D.drawImage() funktioniert nicht mehr korrekt mit Core i7 AWT, Swing, JavaFX & SWT 4
G Graphics.drawImage() AWT, Swing, JavaFX & SWT 6
? Problem mit drawImage: bei Frame ok, bei JPanel nicht AWT, Swing, JavaFX & SWT 4
F Problem mit drawImage() AWT, Swing, JavaFX & SWT 6
M drawImage bremst GUI AWT, Swing, JavaFX & SWT 2
I drawImage AWT, Swing, JavaFX & SWT 4
O performance g2d.drawImage() AWT, Swing, JavaFX & SWT 17
L Bildbewegung mit g.drawImage AWT, Swing, JavaFX & SWT 3
K g.DrawImage unter paintComponent klappt nur beim 1. Aufruf AWT, Swing, JavaFX & SWT 3
S kurze Frage zu drawImage AWT, Swing, JavaFX & SWT 12
F Endlosschleife bei drawImage() AWT, Swing, JavaFX & SWT 4
L Gezeichnetes Image mit DrawImage überzeichnen AWT, Swing, JavaFX & SWT 3
M drawImage mit seltsamen verhalten AWT, Swing, JavaFX & SWT 2
Juelin Javafx hängt sich auf AWT, Swing, JavaFX & SWT 31
P Swing Programm hängt sich bei Buttondruck auf? (GUI für "Chatbot" erstellen) AWT, Swing, JavaFX & SWT 15
H Swing BufferedReader.close() hängt im SwingWorker AWT, Swing, JavaFX & SWT 1
D JavaFX Anwendung hängt sich permanent auf AWT, Swing, JavaFX & SWT 6
T Swing Programm hängt sich auf! AWT, Swing, JavaFX & SWT 23
B Frame hängt sich auf trotz invokeLater AWT, Swing, JavaFX & SWT 1
L JButton flackern - Programm hängt sich auf AWT, Swing, JavaFX & SWT 3
J Programm hängt sich bei Log In auf AWT, Swing, JavaFX & SWT 1
C JFileChooser hängt bei Ausführung mit Terminal AWT, Swing, JavaFX & SWT 2
S JScrollPane --> Programm hängt sich beim scrollen auf AWT, Swing, JavaFX & SWT 2
F Grafik hängt sich auf AWT, Swing, JavaFX & SWT 20
P GUI hängt AWT, Swing, JavaFX & SWT 2
Guybrush Threepwood Desktop.open(file) hängt AWT, Swing, JavaFX & SWT 4
M Programm hängt sich auf nachdem repaint() benutzt wurde AWT, Swing, JavaFX & SWT 2
C Swing JTextfield hängt sich bei Eingabe auf AWT, Swing, JavaFX & SWT 6
C SWT Gui Thread hängt sich auf AWT, Swing, JavaFX & SWT 3
H Swing UndoManager hängt beim Redo AWT, Swing, JavaFX & SWT 3
R GUI hängt während Programm läuft AWT, Swing, JavaFX & SWT 7
D JApplet hängt im Browser fest AWT, Swing, JavaFX & SWT 5
P JTree insertNodeInto hängt das Item in die "Luft" AWT, Swing, JavaFX & SWT 8
E Swing-Gui hängt scheinbar AWT, Swing, JavaFX & SWT 14
J JTextArea#replaceRange() - Wo hängt der Hammer? AWT, Swing, JavaFX & SWT 4
D MessageDialog hängt AWT, Swing, JavaFX & SWT 3
S statusleiste bleibt leer und gui hängt AWT, Swing, JavaFX & SWT 3
G GUI hängt AWT, Swing, JavaFX & SWT 7
M Rechner/JVM hängt ab ca. 247 Frames AWT, Swing, JavaFX & SWT 8
T Java Runtime.exec per JButton auslösen -> Programm hängt AWT, Swing, JavaFX & SWT 10

Ähnliche Java Themen

Neue Themen


Oben