Bild zur Laufzeit in 4 Teile splitten

Marc79

Mitglied
Hallo Gemeinde,

ich habe eine Frage an Euch, mit der Bitte um Ideen oder Tipps.
Ich komme aus der C/C++, C#, usw. Ecke.
Mit Java habe ich bisher einige kleinere Projekte entwickelt.

Aktuell habe ich folgendes Problem.
Von der HD wird ein Bild geladen. Es ist, sagen wir mal 100 x 100 Pixel groß.
Zur Laufzeit möchte ich aber dieses ganze Bild in 4 Teile splitten und die vier Bildstücke auch als Objekte haben.

Ich habe hier gelernt, dass ich ein Bild einem Label zuweisen kann.
Wie aber kann ich eins in 4 Labels teilen?
Die Variante von vorneherein das Bild zu splitten und dann vier Einzelbilder in Labels zu setzen ist machbar, aber keine gute Lösung.

Ich verwende Netbeans in der Version 6.9.

Bin euch für jeden Tipp, jede Idee dankbar :)

Gruß Marc
 
Hi also um ein Bild in 4 Teile zu teilen und diese dann auf Labels anzuzeigen brauchst du lediglich 3 Dinge:

1. Bild als BufferedImage per ImageIO einlesen (geht über URL/Datei/Stream)
http://download.oracle.com/javase/1.4.2/docs/api/javax/imageio/ImageIO.html#read(java.io.File)

2. 4 kleine BufferedImage erstellen die nur einen Ausschnitt des großen haben
http://download.oracle.com/javase/1...redImage.html#getSubimage(int, int, int, int)

3. Aus den BufferedImage ein ImageIcon erstellen, dass man dann auf einem Label benutzen kann
Java:
JLabel label = new JLabel(new ImageIcon(myBufferedImage));

Ich hoffe das hilft dir weiter ;)

---edit---

Da ich grad ein bisschen Luft hatte, habe ich mal kurz eine Beispielfunktion geschrieben die ein BufferedImage in beliebig viele Teile aufteilt und auf ein JPanel zeichnet.
Für den Lerneffekt aber bitte erst anschauen wenn man mit den oberen Tipps wirklich nicht weiterkommt:
Java:
public void splitImage(BufferedImage image, int rows, int columns,
		JPanel panel) {
	
	panel.setLayout(new GridLayout(rows, columns));

	int height = image.getHeight() / rows;
	int width = image.getWidth() / columns;

	for (int r = 0; r < rows; r++) {
		for (int c = 0; c < columns; c++) {
			panel.add(new JLabel(new ImageIcon(image.getSubimage(c * width,
					r * height, width, height))));
		}
	}

}
 
Zuletzt bearbeitet:
Hi Tsunamii,

vielen Dank für den Tipp.
Habe es gleich umgesetzt. Die Idee mit dem BufferedImage ist klasse.

Dein Edit-Bsp. habe ich erst jetzt gesehen. Ich hatte es so ähnlich gemacht, aber dein Bsp. sieht wesentlich besser aus u hat weniger Zeilen :)

Vielen Dank und Gruß
Marc
 

Neue Beiträge

Zurück