2016-07-12 100 views
-1

此帖已被刪除,以獲取完整代碼和負面分數的報告。我需要將圖像轉換爲灰度,然後將灰度範圍着色爲新顏色

+1

你確定應用程序正在調用'ImageIO.write'嗎?你已經把所有東西都包裹在一個試圖捕獲的地方,那裏的捕獲物是空的(這是不好的巫術,海事組織)。在那裏添加一些日誌記錄,並確保你沒有默默吞嚥異常。 – nasukkin

+0

我在下面的答案中提供了一個示例。一般來說,捕捉異常並不採取任何措施是很糟糕的。在我的例子中,我簡單地包裝並重新拋出異常。這種方法很直接,但它完美突出了當前問題所在。 – nasukkin

+0

我可能可以。但是,我不打算。記錄錯誤,確定代碼中出現錯誤的行,請參閱您正在調用的API的AWT文檔,並且修復應該對您顯而易見。這裏主要的一點是,日誌記錄(特別是日誌記錄錯誤)和諮詢API文檔是一項非常寶貴的技能,這將使您成爲一名強大的編碼人員。 – nasukkin

回答

0

我對你的代碼做了一些細微的修改並試用了它。我所做的修改是在追趕塊:

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

當我跑了,我有以下幾點:

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 

所以,你在你寫你的輸出前打一個錯誤。說到AWT,我當然不是專家,但它看起來像你的代碼產生無效的顏色值。你需要解釋這一點。

+0

@ 0tom123546789異常告訴您,您正在構建變量'newColor'的示例代碼的第55行構建了一個糟糕的'Color'對象。有關輸入參數的有效範圍,請參閱AWT的文檔。我無法確切地告訴你你需要什麼,只是你違反了Color類的合同,並且它正在趕上你。對於你的彙編程序,你可以查看官方的javadoc [here](https://docs.oracle.com/javase/7/docs/api/java/awt/Color.html#Color(int,%20int,%20int) )。你的參數很可能超過'255'。 – nasukkin