Programmieren Hilfe BlueJ?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

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!

Woher ich das weiß:Berufserfahrung
IsabellMavi 
Fragesteller
 26.04.2024, 15:04

Es hat funktioniert, danke sehr!!!

1