Bilder erzeugen

In diesem Kapitel soll eine Java Applikation ein Bild erzeugen. Dies geschieht so, dass das Programm in einen nicht sichtbaren Grafikkontext zeichnet und dass dieser anschliessend in eine Bilddatei geschrieben wird. Neben den normalen Grafikklassen brauchen wir drei weitere Dinge: Die Klasse BufferedImage, ein Bild, in das wir zeichnen können (Package java.awt.image). Einen Stream um in die Bilddatei zu schreiben (Package java.io). Einen Encoder um ein Bild im jpeg Format zu speichern (Package com.sun.image.codec.jpeg). Also sind diese drei Packages zu importieren:

  • Erstellen Sie ein Projekt namens CreateImage vom Typ Basic Java Applet.
  • Importieren Sie zusätzlich:

    import java.awt.image.*;
    import java.io.*;
    import com.sun.image.codec.jpeg.*;

Um in das Bild zeichnen zu können brauchen wir drei Klassen: Ein Frame, in welchem wir das Bild erzeugen, das Bild selber (BufferedImage) und sein Grafikkontext Graphics. Zusätzlich machen wir uns eine TextArea, damit wir sehen können, was das Programm macht.

  • Deklarieren Sie als Klassenvariablen:.

    Frame frame = null;
    BufferedImage image = null;
    Graphics g = null;

    TextArea area = null;

  • Erzeugen Sie das Bild im Konstruktor:

    String s = "Start";
    area = new TextArea(s);
    add(area);
    frame = new Frame();
    frame.addNotify();
    image = (BufferedImage)frame.createImage(50,50);
    g = image.getGraphics();

  • Jetzt kann man mit g in das Bild zeichnen, z.B:

    g.setColor(Color.red);
    g.fillRect(10,10,30,30);
    s = s + ", Bild gezeichnet";
    area.setText(s);

  • Und schlussendlich wird der Bildinhalt in die Datei geschrieben:

    try {
      FileOutputStream fos = new FileOutputStream("test.jpg");
      JPEGImageEncoder ie = JPEGCodec.createJPEGEncoder(fos);
      ie.encode(image);
      s = s + ", Bilddatei erstellt!";
      area.setText(s);
    }
    catch (FileNotFoundException e) {
      System.out.println("Dateifehler!");
    }
    catch (IOException e){
      System.out.println("Schreibfehler!");
    }

Im Ordner des Projektes im Unterordner classes sollte jetzt eine datei text.jpg sein. Öffnen Sie die Datei mit Photoshop oder was auch immer und schauen Sie sich Ihr wunderbares Bild an!

Ideen für's Pröbeln:

  • Schreiben Sie Text ins Bild.
  • Verändern Sie die Bildgrösse.
  • Holen Sie das Bild aus der Datei ins Programm und stellen sie es dar.

Hinweis: Leider gehen .gif Bilder meines Wissens in Java nicht aus rechtlichen Gründen.