Image skaliert in Variable speichern

Trunk

Mitglied
Hallo!

Da das ständige skalieren der Bilder bei vielen Objekten mittlweile kleinere Grafikfehler verursacht (flimmern usw), wollte ich diesen Prozess auslagern und in einem Array die verschieden gestreckten Bilder speichern.

Immoment sieht das ganze so aus:

Java:
public void drawObjects(Graphics g) {
		
	        Graphics2D g2 = (Graphics2D)g;
	        int newW = (int)(image.getWidth() * scalefactor * parent.getZoomfactor());
	        int newH = (int)(image.getHeight() * scalefactor * parent.getZoomfactor());
	        g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION,
                    RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR  );
	        
	        //Abstand X tile und player
	        double xdistance = this.x - parent.p.getX();
	        double xChange = xdistance * (1-parent.getZoomfactor());
	        
	        double ydistance = this.y - parent.p.getY();
	        double yChange =  ydistance * (1-parent.getZoomfactor());
	        
	        double newx = Math.round(x- newW/2 -scrollx - xChange);
	        double newy = Math.round(y- newH/2 -scrolly -yChange);
  
	        
	        g2.drawImage(image, (int)newx, (int)newy, newW, newH, null);
}

Wie zu sehen ist wird das bild in der letzten Zeile auf die neue Höhe und Breite angepasst, nur ist das wohl bei vielen Objekten zu häufig, also wollte ich alles in einem Array speichern und dann nurnoch das entsprechend schon gestreckte Bild laden. (z.B. g2.drawImage(image[0], x,y,null) )

Nur wie gehe ich das an? Was für einen Typ müsste das Array haben? ???:L

Danke schonmal für eure Hilfe :)
 
G

Gast2

Gast
Ich würde mir die verschiedenen Größen in einer Map speichern,
Code:
Map<Dimension, Image>
oder so ähnlich.
Auf einem Image kannst du getScaledInstance aufrufen um dir das Bild in verschiedenen Größen erstellen zu lassen:
Image (Java 2 Platform SE v1.4.2)
 

Marco13

Top Contributor
Wenn man das Fenster dann langsam von 100x100 auf 1000x1000 großzieht, läuft einem der Speicher voll. Besser wäre evtl. sich NUR bei Größenänderungen (ComponentListener) neue, auf die aktuelle Größe angepasste Images zu erstellen.
 
G

Gast2

Gast
Nagut, ich bin jetzt nicht davon ausgegangen dass der TO jedes Bild in allen möglichen Größen speichern will. In dem Quellcode steht was von Zoomfaktor, daher bin ich davon ausgegangen, dass es maximal so 3 bis 5 Zoomstufen gibt.
 

Trunk

Mitglied
Also ich hab das mit getScaledInstance() probiert, und mir ist nach ein paar mal zoomen tatsächlich immer der speicher vollgelaufen...

Ich versuch nochmal kurz es zu erklären:

Ich habe auf der Spielwelt zufällig Bäume platziert, und diese haben dann eine gewisse (zufällige) Skalierung.



Zoomt man jetzt mit dem Mausrad, brauche ich von jedem dieser Bäume (die alle eine mehr oder weniger andere Größe haben) in fünf Zoomstufen fünf vergrößerte Bilder...



Da es in manchen Arealen sehr viele Bäume gibt, kommt das Spiel mit der Berechnung der Größe mithilfe von DrawImage() nicht mehr klar, deswegen dachte ich ich könnte die Berechnung irgendwie "auslagern" und seltener durchführen (oder sogar nur 1x)
 
Zuletzt bearbeitet:

Fu3L

Top Contributor
Du kopierst also für jeden Baum das Bild 5x zB?

Machs wirklich lieber wie EikeB es schreibt: Du speicherst lediglich die Größe des Baums im Baumobjekt und wählst dann aus einer Map immer das richtig große Bild aus. So kannst du immer noch zufällig große Bäume verteilen, diese Zufallsgrößen müssen nur eben irgendwie einer vorgespeicherten Größe entsprechen..

Edit: Sieht aber ganz schick aus dein Spiel ;)
 
Zuletzt bearbeitet:

Trunk

Mitglied
Du kopierst also für jeden Baum das Bild 5x zB?

Machs wirklich lieber wie EikeB es schreibt: Du speicherst lediglich die Größe des Baums im Baumobjekt und wählst dann aus einer Map immer das richtig große Bild aus. So kannst du immer noch zufällig große Bäume verteilen, diese Zufallsgrößen müssen nur eben irgendwie einer vorgespeicherten Größe entsprechen..

Edit: Sieht aber ganz schick aus dein Spiel ;)

Okay, ich werd mich dann mal mit Maps auseinandersetzen, hab ich bisher noch nicht gemacht :rtfm:
Also danke für die Tipps ich werd mich melden wenns geklappt hat (oder eben nicht :noe:)

und danke :)

edit: hat geklappt, danke nochmal!

Java:
	public void createMaps(String s,Image b)
	{
		Image b2 = null;
		
		HashMap <Double, Image >hm = new HashMap<Double, Image>();
		scaledImages.put(s,hm );
		
		for (double d = 1;d<4;d=d+0.1)
		{
			d = Math.round(d*10.)/10.;
			b2 = b.getScaledInstance((int)(b.getWidth(null)*d), (int)(b.getHeight(null)*d), Image.SCALE_SMOOTH);
			hm.put(d, b2);
			
		}
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
K JavaFX Bildergalerie aus Image Ordner laden AWT, Swing, JavaFX & SWT 3
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
N Swing Image aus Web laden und in Icon umwandeln 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
C Image laden und Speichern - Image wird auf JPanel nicht angezeigt AWT, Swing, JavaFX & SWT 4
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
R Image laden sehr langsam AWT, Swing, JavaFX & SWT 7
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
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
B Swing Image als Hintergrund im JInternalFrame - Problem AWT, Swing, JavaFX & SWT 3
W Image in jar einbauen AWT, Swing, JavaFX & SWT 20
Luk10 AWT Image und die Skalierung! AWT, Swing, JavaFX & SWT 3
L JPanel als Image speichern AWT, Swing, JavaFX & SWT 3
Developer_X Image Texels filtern AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben