Bildrauschen bei AffineTransform?

Status
Nicht offen für weitere Antworten.

manuche

Bekanntes Mitglied
Hallo!
Ich implementiere grad einen Countdown in mein Spiel was soweit auch funktioniert... Dabei wird eine Bild (eine Zahl) von Zeit zu Zeit verkleinert... Das Bild liegt in gif-Datei vor und wird in ein BufferedImage geladen!
(Ich denke mal) beim resizen taucht ein Bildrauschen auf, was dann so aussieht:



Was mich jetzt stutzig macht ist, dass ich vorher auch schon gif-Bilder geladen und in der größe verändert hab und da taucht dieses Phänomen nicht auf...
Hier mal der Code:
Code:
	public void move (long delta){
		for (int i = 0; i < pics.length; i++){
			this.width -= (dx * (delta / 1e9));
			this.height -= (dy * (delta / 1e9));
			BufferedImage tempImage = new BufferedImage ((int) width, (int) height, BufferedImage.TRANSLUCENT);
			Image newPic = pics[i].getScaledInstance ((int) width, (int) height, Image.SCALE_SMOOTH);
			Graphics g = tempImage.getGraphics ();
			g.drawImage (newPic, 0, 0, null);
			pics[i] = tempImage;
			this.updatePos ();
		}
	}

	private void updatePos (){
		this.x = (gamePanel.getWidth () - pics[0].getWidth ()) / 2;
		this.y = (gamePanel.getHeight () - pics[0].getHeight ()) / 2;
	}
Aber woran könnte es sonst liegen? Ich kenn mich nicht so wirklich mit Bildbearbeitung aus aber ich hab sowohl mit Photoshop als auch mit Paintshop jede Art von Export und gif-Optimierung ausprobiert!
 

Marco13

Top Contributor
Wenn es mit BufferedImage.TRANSLUCENT überhaupt funktioniert, ist daran der Rainer schuld. (Rainer Zufall). Dort müßte ein BufferedImage.TYPE_XXXX stehen. TYPE_INT_RGBA könnte es schon tun. Ansonsten musst du ein bißchen aufpassen: Wenn ein GIF mit Farbverläufen gespeichert wird, wird häufig http://de.wikipedia.org/wiki/Dithering_(Bildbearbeitung) verwendet, was beim Skalieren übelst schiefgehen kann.
Falls das nicht hilft, und es auch nach einem Blick auf http://today.java.net/pub/a/today/2007/04/03/perils-of-image-getscaledinstance.html nicht funktioniert, sag nochmal bescheid.
 
Status
Nicht offen für weitere Antworten.

Oben