Performance Problem bei BufferedImage

Status
Nicht offen für weitere Antworten.

Templon

Bekanntes Mitglied
Hi,
Also ich habe bis jetzt immer ImageIcons genommen für meine Bilder, habe aber oft gelesen das BufferedImages viel schneller sind etc also habe ich mal auf Buffered Image gewechselt. Nun ist es aber viel längsamer (100 Bilder mit Auflösung 64 * 64 habe ich gerade mal 12 fps) Ich glaube irgendwas habe ich falsch gemacht 😛 Also hier mal der Code:

Die Tile Klasse:
Code:
public class Tile {
	private double x;
	private double y;
	private BufferedImage image;
	
	public Tile(double x, double y, BufferedImage image) {
		this.x = x;
		this.y = y;
		this.image = image;
	}

	public BufferedImage getImage() {
		return image;
	}

	public void setImage(BufferedImage image) {
		this.image = image;
	}

	public double getX() {
		return x;
	}

	public void setX(double x) {
		this.x = x;
	}

	public double getY() {
		return y;
	}

	public void setY(double y) {
		this.y = y;
	}
}

Ein 2-Dimensionales Array von diesen Tiles, Und das füllen des Arrays:

Code:
	Tile[][] mapTiles = new Tile[10][10];

	public void fillMap() {
		for (int x = 0; x < mapTiles.length; ++x) {
			for (int y = 0; y < mapTiles.length; ++y) {
				mapTiles[x][y] = new Tile(x * 64, y * 64, ImageLoader.LoadImage("test/data/pictures/Grass1.png"));
			}
		}
	}

Hier noch das wahrscheindlich wichtigste. Die Klasse welche die Bilder herausliest.

Code:
public class ImageLoader {

	public static BufferedImage LoadImage(String fileToLoad) {
		BufferedImage image = null;
		try {
			File file = new File(fileToLoad);
			image = ImageIO.read(file);
		} catch (IOException e) {
			System.err.println("Couldnt read File: " + fileToLoad);
		} finally {
			
		}
		
		return image;
	}
}

Kann mir jemand sagen was ich hier falsch gemacht hab?

Mfg, Templon
 
Wenn du BufferedImages aus pngs erzeugen willst musst du dir vorher überlegen welches ColorModel du benutzen willst.
pngs haben einen Alpha-Kanal und können daher nicht Hardwarebeschleunigt werden, denn das geht nur mit Bitmasken Transparenz.
Wenn du den Alpha-Kanal nicht brauchst verwende explizit ein anderes ColorModel.
 
ja...

Ich habe bisher auch tranparente bilder benommen und nun will und muss ich tranparenz programmieren.

aber irgendwie begreif ich noch nicht wie man einen ColorFilter schreibt und ihn auf ein Image ansetzt usw, ein kleines beispiel wär nett 😀
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben