Programmieren Hilfe BlueJ?

Hallo zusammen,

Wir programmieren zurzeit auf BlueJ, unsere Aufgabe ist es, Farben zu ändern oder Bilder zu spiegeln oder zu drehen etc. Bislang habe ich alles meistern können. Jedoch komme ich nicht weiter, ich muss nämlich ein Bild mit natürlichen Graustufen (Rot mit 29,9%, Grün mit 58,7% und Blau mit 11,4%) darstellen. Dabei habe ich folgendes gemacht:

Das scheint aber falsch zu sein weswegen dann so was rauskam:

(Hier bitte nur die letzten Zeilen beachten)

Könnte mir hier jemand helfen?

(1 votes)
Loading...

Similar Posts

Subscribe
Notify of
2 Answers
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
EchoTech
10 months ago

Also, der Knackpunkt bei der Sache ist, dass die Farbwerte in Java im Bereich von 0 bis 255 definiert sind. Wenn deine Berechnung der Graustufen darüber hinausschießt, knallt es – deshalb die Exception.

Du hast die richtige Idee mit der Umrechnung der Farbwerte zu Grautönen – Rot mit 29,9%, Grün mit 58,7% und Blau mit 11,4%. Aber wie gesagt, das Ergebnis muss zwingend in unserem 0-255 Bereich liegen.

for (int x = 0; x < breite; x++) {
    for (int y = 0; y < hoehe; y++) {
        int roterAnteil = pixel[x][y].getRed();
        int gruenerAnteil = pixel[x][y].getGreen();
        int blauerAnteil = pixel[x][y].getBlue();
        int grauwert = (int)(roterAnteil * 0.299 + gruenerAnteil * 0.587 + blauerAnteil * 0.114);
        // Klammern setzen, um sicherzustellen, dass die Multiplikation zuerst ausgeführt wird!
        grauwert = Math.min(grauwert, 255); // Das hier stellt sicher, dass der Wert nicht > 255 ist.
        pixelNeu[x][y] = new Color(grauwert, grauwert, grauwert); // Und ab damit ins neue Pixelarray.
    }
}

Die Math.min() Funktion ist hier dein Freund, sie hält den Wert im Rahmen. Probiere das mal aus und sag mir, ob’s geklappt hat!