Images painten - Was ist schneller?

xyss

Aktives Mitglied
Hallo,

BufferedImage bringt natürlich einige Vorteile mit sich, aber wie ist es mit dem zeichnen der Bilder (per drawImage)? Ist dort Image aufgrund seiner "Einfachheit" evtl schneller, oder ist BufferedImage ebenso effektiv?
Die Frage stellt sich mir, da ich bei meinem aktuellen Projekt viel mit Images gearbeitet habe (aus Datei laden und hinzeichnen), nun aber auch Images z.B. rotieren will, und dies geht jedenfalls bei BufferedImage recht einfach. Nun würde ich natürlich gerne wissen, ob ich lieber komplett auf BufferedImage umsteigen sollte, oder das Image in ein BufferedImage umwandeln, rotieren, und dann wieder in ein Image casten...
Desweiteren würde es mich interessieren, ob ihr irgend eine gescheite Lektüre zu BufferedImageOp und zu RenderingHints empehlen könnt.

lg
 
Zuletzt bearbeitet:

Gucky

Top Contributor
Umwandeln und Casten kostet auch Leistung.
Das BufferedImage puffert (buffers) Daten, weshalb dieses eigentlich schneller sein müsste.

Aber Probieren geht über Studieren. Schreibe dir einen kleinen Test, in dem du die Zeiten der einzelnen Operationen misst und dann guckst du, was schneller ist.
 

xyss

Aktives Mitglied
Hab es Mal ausprobiert:
Die Bilder habe ich im Voraus aus der Datei geladen (erstaunlicherweise brauchte das BufferedImage beim Laden aus der Datei fast 20 Mal so lange..), da ich in meinem Projekt sowieso zum Start des Programmes die Bilder bereits lade.

Java:
for (int i = 0; i < 1000; i++){
				long pre = System.currentTimeMillis();
				TestBuff = ImageRotator.rotateImage(TestBuff, 90d);
				Graphics2D g2d = (Graphics2D) g;
				g2d.drawImage(TestBuff,null,0,0);
				long after = System.currentTimeMillis();
				
				result += after-pre;
				System.out.println(after-pre);
			}
			result = result / 1000;
			System.out.println("result: "+result+ "ms");

Ergebnis: 13 ms


Java:
long result = 0;
			for (int i = 0; i < 1000; i++){
				long pre = System.currentTimeMillis();
				TestImg = ImageRotator.rotateImage(toBufferedImage(TestImg),90d);
				g.drawImage(TestImg,0,0,null);
				long after = System.currentTimeMillis();
				
				result += after-pre;
				System.out.println(after-pre);
			}
			result = result / 1000;
			System.out.println("result: "+result);

Ergebnis: 14

Das hin- und her Casten macht also kaum einen Unterschied.. außer natürlich wenn ich hier irgendeinen Blödsinn angestellt habe :D
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Datentypen Cache Images Heap Space Error Allgemeine Java-Themen 7
C images einbinden Allgemeine Java-Themen 7
Kenan89 Schnelleres Einlesen von Images Allgemeine Java-Themen 6
D 2D-Grafik Funktionierende .jar datei mit Images (jpg) erzeugen Allgemeine Java-Themen 2
J iText und images Allgemeine Java-Themen 6
MQue Images für Buttons Allgemeine Java-Themen 5
P Images abwechselnd Darstellen Allgemeine Java-Themen 12
E aktualisieren eines Images Allgemeine Java-Themen 6
E 2 Images auf einem JFrame Allgemeine Java-Themen 8
A Pufferung von Images Allgemeine Java-Themen 7
L Label mit Images Allgemeine Java-Themen 20
F Dateigröße eines entfernen Images ermitteln Allgemeine Java-Themen 3
D Bild per Button painten Allgemeine Java-Themen 5
M Dieses Programm schneller machen? Allgemeine Java-Themen 2
M Dateien schneller kopieren Allgemeine Java-Themen 1
D Eine Forschleife mit Threads abarbeiten um es zu schneller zu machen. Ist das möglich? Allgemeine Java-Themen 20
M While-Schleife schneller, solange die Abbruchbedingung nicht vom Schleifeninneren abhängt Allgemeine Java-Themen 3
B Threads Timer wird immer schneller Allgemeine Java-Themen 6
G Erste Schritte Aufgabe - Geht das auch schneller ? Allgemeine Java-Themen 7
L Assoziatives Datenfeld, schneller wie Hashmap Allgemeine Java-Themen 35
B Input/Output Schneller Sort mit wenigen Zugriffen (oder was anderes?) Allgemeine Java-Themen 3
V Thread schneller stoppen Allgemeine Java-Themen 2
D NetBeans Programm in NetBeans deutlich schneller als als Jar Allgemeine Java-Themen 33
F ArrayList schneller als LinkedHashMap? Allgemeine Java-Themen 8
feuervogel Performanzprobleme - Code schneller machen Allgemeine Java-Themen 18
J Was ist schneller? Neue Variable oder neuer Wert speziell int Allgemeine Java-Themen 3
R Was ist schneller? Allgemeine Java-Themen 3
E Schneller Einstieg in Java und Web Services Allgemeine Java-Themen 3
C Wer kanns schneller? Allgemeine Java-Themen 13
M Was ist schneller und effizienter GZIP(java) oder 7zip ? Allgemeine Java-Themen 5
D Was ist schneller? Zuweisung oder Vergleich? Allgemeine Java-Themen 18
D Geht es auch schneller doppelte Einträge zu löschen? Allgemeine Java-Themen 23
B Vermeiden das JButton schneller hintereinander drücken Allgemeine Java-Themen 3
m@nu Thumbnails schneller erstellen Allgemeine Java-Themen 2
T Warum mein such-tool schneller als Windows such-tool? Allgemeine Java-Themen 5
A Wie mach ich, das mein Button schneller reagiert. Allgemeine Java-Themen 13
D binär einlesen schneller? Allgemeine Java-Themen 3
S Gehts schneller? Allgemeine Java-Themen 10

Ähnliche Java Themen

Neue Themen


Oben