Fotofilter
Ziel
Jede Kamera-App kann es: ein Bild heller machen, es in Schwarzweiß verwandeln, es weichzeichnen, die Umrisse hervorheben. In diesem Projekt baust du diese Filter selbst – und dabei lernst du die Datenstruktur kennen, ohne die Bildverarbeitung nicht funktioniert: das zweidimensionale Feld.
Ein Foto ist nämlich nichts anderes als eine Tabelle aus Zahlen. 96 Spalten, 72 Zeilen, in jeder Zelle eine Helligkeit. Ein Filter ist eine Vorschrift, die aus dieser Tabelle eine neue macht. Mehr steckt nicht dahinter.
Am Ende hast du ein gutes Dutzend Filter geschrieben, sie zu einer Kette zusammengesteckt und dabei gesehen, warum man dafür Klassen und Vererbung gebrauchen kann.
Vorwissen
Du solltest programmieren können, was im Lernpfad Grundlagen der Programmierung mit Java steht:
- Variablen und Datentypen
- Kontrollstrukturen, vor allem geschachtelte Schleifen
- Methoden
- Eindimensionale Felder
- Objektorientierung – Klassen, Objekte, Attribute
Für die letzten beiden Seiten hilft es, wenn du Vererbung und abstrakte Klassen schon kennst. Nötig ist es nicht – die Seiten führen das ein, was sie brauchen.
So arbeitest du damit
- Alle Programmierbereiche laufen im Browser. Du musst nichts installieren.
- Jeder Bereich enthält das vollständige Programm. Du kannst darin herumändern, ohne etwas kaputtzumachen – ein Neuladen der Seite stellt den Ursprung wieder her.
- Gestartet wird mit dem kleinen Pfeil neben
Main.javain der Dateiliste links. - Tipps sind gestuft: Der erste gibt einen Denkanstoß, der letzte ein Gerüst.
- Die Lösungen sind mit einem Passwort geschützt. Frag deine Lehrkraft oder sieh auf der Seite Lösungspasswörter nach.
Die Seiten
| Seite | Darum geht es |
|---|---|
| Das Bild als Gitter | Zeilen, Spalten, length – und das Foto zum ersten Mal auf dem Schirm |
| Punktfilter | Heller, dunkler, invertiert, schwarzweiß: jeder Bildpunkt für sich |
| Farbe und Kanäle | Drei Gitter statt einem – Sepia, Farbstiche, Kanaltausch |
| Spiegeln und Drehen | Nicht die Werte ändern sich, sondern die Indizes |
| Weichzeichnen | Der Nachbarschaftsfilter – und warum er eine Kopie braucht |
| Kanten finden | Wo sich die Helligkeit schnell ändert, ist ein Umriss |
| Filter als Klassen | Aus acht Methoden wird eine Filterkette |
| Dein eigener Filter | Freies Arbeiten, ohne Musterlösung |
Woher kommt das Foto? Die Entwicklungsumgebung im Browser kann keine
Bilddatei laden. Das Foto bringt sich deshalb selbst mit: Es steckt als
Zeichenkette in der Datei Foto.java, drei Zeichen je Bildpunkt. Die Datei
findest du in jedem Programmierbereich – du musst sie nie anfassen, nur
benutzen.