5

JUnit でコードをテストしたところ、次のエラーが発生しました。

java.lang.IllegalArgumentException: Color parameter outside of expected range: Red Green Blue

正直なところ、理由はわかりません。私のコードはそれほど長くないので、より良い助けになるように投稿したいと思います.

BufferedImage img = ImageIO.read(f);
        for (int w = 0; w < img.getWidth(); w++) {
            for (int h = 0; h < img.getHeight(); h++) {
                Color color = new Color(img.getRGB(w, h));
                float greyscale = ((0.299f * color.getRed()) + (0.587f
                        * color.getGreen()) + (0.144f * color.getBlue()));
                Color grey = new Color(greyscale, greyscale, greyscale);
                img.setRGB(w, h, grey.getRGB());

JUnitテストを実行すると、Eclipseは次の行をマークアップします

Color grey = new Color(greyscale, greyscale, greyscale);

したがって、問題は浮動小数点数で作業し、ご覧のとおり、画像の赤、緑、青のコンテンツを再計算することであると思います。

誰かがその問題を解決するのを手伝ってくれますか?

4

1 に答える 1