2016-07-12 16 views
-1

Dieser Beitrag wurde für Berichte über vollständigen Code und negative Bewertungen gelöscht.Ich muss ein Bild in eine Graustufe umwandeln und dann die Graubereiche in neue Farben einfärben

+1

Sind Sie sicher, dass die Anwendung den Aufruf von ImageIO.write erreicht? Du hast das Ganze in einen Try-Catch gehüllt, wo der Fang leer ist (was ein schlechter Voodoo ist, IMO). Fügen Sie einige Anmeldungen hinzu und stellen Sie sicher, dass Sie nicht stillschweigend eine Ausnahme verschlucken. – nasukkin

+0

Ich habe ein Beispiel in meiner Antwort unten angegeben. Im Allgemeinen ist es ein schlechter Stil, eine Ausnahme zu fangen und dann nichts damit zu tun. In meinem Beispiel habe ich die Ausnahme einfach umgebrochen und neu geworfen. Dieser Ansatz ist offen, aber er zeigt perfekt auf, wo das unmittelbare Problem liegt. – nasukkin

+0

könnte ich wahrscheinlich. Aber ich werde es nicht tun. Protokollieren Sie den Fehler, identifizieren Sie die Zeile in Ihrem Code, von der der Fehler stammt. Konsultieren Sie die AWT-Dokumentation für die API, die Sie aufrufen, und die Fehlerbehebung sollte für Sie offensichtlich sein. Das Wichtigste dabei ist, dass das Logging (insbesondere das Loggen von Fehlern) und die Beratung mit der API-Dokumentation eine unschätzbare Fähigkeit ist, die Sie zu einem mächtigen Coder machen wird. – nasukkin

Antwort

0

Ich habe ein paar kleine Änderungen an Ihrem Code vorgenommen und es ausprobiert. Die Änderung war ich an den catch-Block gemacht:

catch (Exception e) { 
    throw new RuntimeException(e); 
} 

Als ich es lief, habe ich folgendes:

Exception in thread "main" java.lang.RuntimeException: java.lang.IllegalArgumentException: Color parameter outside of expected range:  Red Green Blue 
    at Colorize.<init>(Colorize.java:64) 
    at Colorize.main(Colorize.java:70) 
Caused by: java.lang.IllegalArgumentException: Color parameter outside of expected range: Red Green Blue 
    at java.awt.Color.testColorValueRange(Color.java:310) 
    at java.awt.Color.<init>(Color.java:395) 
    at java.awt.Color.<init>(Color.java:369) 
    at Colorize.<init>(Colorize.java:55) 
    ... 1 more 

Also, bist du einen Fehler trifft, bevor Sie Ihre Ausgabe schreiben. Ich bin sicherlich kein Experte, wenn es um AWT geht, aber es sieht so aus, als ob Ihr Code ungültige Farbwerte erzeugt. Sie müssen das berücksichtigen.

+0

@ 0tom123546789 Die Ausnahme besagt, dass Sie ein fehlerhaftes 'Color'-Objekt in Zeile 55 Ihres Beispielcodes konstruieren, in dem Sie die Variable' newColor' konstruieren. In der AWT-Dokumentation finden Sie Informationen zum gültigen Bereich der Eingangsparameter. Ich kann dir nicht genau sagen, was du brauchst, nur dass du gegen den Vertrag der Color-Klasse verstößt und dass er dich fängt. Für Ihre Teilnahme können Sie das offizielle Javadoc [hier] ansehen (https://docs.oracle.com/javase/7/docs/api/java/awt/Color.html#Color (int,% 20int,% 20int)). Sie überschreiten höchstwahrscheinlich 255 für einen Ihrer Parameter. – nasukkin