Bilder



XML und Java ... Die Java 2D API ... Next: Fazit

[nach oben]


Einführung

Die Bildverarbeitung ist ein sehr komplexes Thema in der Java 2D API. Es stehen hier viele Möglichkeiten zur Verfügung, um Bilder - z.B. durch mathematische Funktionen (Filter, Interface java.awt.image.BufferedImageOp) - zu verarbeiten. Auf die internen Daten eines Bildes kann man bei Benutzung der Klasse java.awt.image.BufferedImage lesend und schreibend zugreifen. Aus Komplexitätsgründen gehe ich hier lediglich auf das Laden und Darstellen von Bildern ein. Das Paket java.awt.image enthält Klassen für die Bildverarbeitung.

[nach oben]


Bilder laden und zeichnen

Bilder im oft verwendeten JPEG-Format können mit der Klasse com.sun.image.codec.jpeg.JPEGImageDecoder aus einem Eingabestrom geladen werden. Man erhält ein BufferedImage-Objekt, welches in der Graphics2D-Zeichenfläche dargestellt werden kann. Interessant ist hierbei, daß auch Bilder gemäß der gesetzten Eigenschaften wie z.B. der aktuellen affinen Transformation oder der aktuellen Kompositionsregel, gezeichnet werden.

Die Darstellung eines Bildes erfolgt mit einer der drawImage-Methoden aus Graphics2D, wie das folgende Beispiel (Zugriff auf die Quelle) zeigt:


public void paint(Graphics g) {
				
				//Upcast --> mehr Funktionen in Graphics2D
				Graphics2D g2d=(Graphics2D)g;
				//Antialiasing
				g2d.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON );
				
				//Bild laden
				BufferedImage img = loadTheImage();
				
				//Bild malen
				g2d.drawImage( img, null, 0,0 );
				
				//Affine Transformation
				AffineTransform atx = new AffineTransform();
				atx.scale(0.5,0.5);
				atx.translate(500,0);
				atx.rotate(Math.PI/8f);
				g2d.setTransform( atx );				
				
				//Transparenz
				g2d.setComposite( AlphaComposite.getInstance( AlphaComposite.SRC_OVER, 0.7f ) );
				
				//Bild erneut malen
				g2d.drawImage( img, null, 0,0 );
			}
Das Ergebnis sieht so aus:


XML und Java ... Die Java 2D API ... Zum Seitenanfang