Aufgabenvorschlag: Gegeben ist ein Malprogramm, mit dem weiße Felder mit den Farben gelb, rot, blau oder grün gefärbt werden können: Das Bild wird als zweidimensionale Reihung von Zeichen gespeichert: char[][] bild = new char[breite][hoehe]; wobei folgende Zeichen abgespeichert werden: 'w' für weiß, 'r' für rot, 'y' für gelb, 'g' für grün und 'b' für blau. Aufgabe 1: Das Bild soll ferner als Zeichenkette gespeichert werden, mittels Lauflängencodierung. Lauflängencodierung meint folgendes: Statt jedes Zeichen einzeln in speichern, wird angegeben, wie viele gleiche Zeichen folgen werden und anschließend das zugehörige Zeichen, unterbrochen von Trennzeichen. Das obige Bild würde demnach als Zeichenkette folgendermaßen aussehen: 10:w|10:w|4:w,1:r,5:w|3:w,1:r,1:y,1:r,4:w|4:w,1:r,5:w|4:w,1:g,5:w| 3:w,2:g,5:w|4:w,2:g,4:w|4:w,1:g,5:w|4:w,1:g,5:w| Wobei das Zeichen '|' die Zeilen im Bild trennt. a) Geben Sie das nebenstehende Bild mittels Lauflängencodierung als Zeichenkette an. b) Nehmen Sie das Attribut bild wie oben als global definiert an und schreiben Sie eine Methode public String Lauflaenge (char[][] bild) {…} die eine Lauflängencodierung Definition durchführt. nach obiger Aufgabe 2: Eine Farbe kann auch als RGB-Wert angegeben werden. (Zur Erinnerung: Ein RGB-Wert ist ein Tripel von Zahlen im Bereich 0 bis 255, wobei die Farbe Rot = RGB(255, 0, 0), Grün = RGB(0, 255, 0) und Blau = RGB (0, 0, 255). Schwarz hingegen hat den RGB-Wert (0,0,0).) Für die Farben cyan, mangenta, weiß und gelb ist folgender Farbwürfel hilfreich: Zu einer Farbe, z.B. RGB(124, 71, 0) gehört nun die Falschfarbe RGB(131, 184, 255), da 255-124=131, 255-71=184 und 255-0=255. a) Geben Sie für das unten stehende Bild an, wie das zugehörige Bild in Falschfarbendarstellung aussieht. Lösung: b) Das Attribut bild2 speichert das Bild des Malprogramms nun als zweidimensionale Reihung von Objekten der Klasse Pixel. Pixel[][] bild2 = new Pixel[breite][hoehe]; Zu der Klasse Pixel gehören folgende Methoden: getRot():int liefert einen Wert zwischen 0 und 255, die Rotkomponente im RGB-Farbmodell getGruen():int liefert einen Wert zwischen 0 und 255, die Grünkomponente im RGB-Farbmodell getBlau():int liefert einen Wert zwischen 0 und 255, die Blaukomponente im RGB-Farbmodell Pixel(int r, int g, int b) Der Konstruktor kann mit den drei Farbwerten des RGBModells aufgerufen werden Implementieren Sie ein Codefragment in Java, welches ein Falschfarbenbild von bild2 ebenfalls als zweidimensionale Reihung erzeugt. Aufgabe 3: Zum Abspeichern des Bildes soll ein Format verwendet werden, dass „JPEG“ simulieren soll. JPEG schränkt u.a. zur Kompression der Dateigröße den Farbraum eines Bildes ein, indem 8x8 Pixelblöcke gebildet werden. Die RGB-Werte der Farben in den 8x8 Pixelblöcken werden „gemittelt“ und haben nach dem Speichern so alle dieselbe Farbe. Das soll in diesem Malprogramm mit 2x2 Pixelblöcken simuliert werden. a) Verwenden Sie die Definition von bild2, der zweidimensionalen Reihung der Klasse Pixel, aus Aufgabe 2. Schreiben Sie ein Java-Codefragment, welches den RGB-Wert der unten gezeigten 2x2 Blöcke mittelt und das entstehende Bild ebenfalls als zweidimensionale Reihung speichert. Zur Veranschaulichung: 2x2-er Blöcke