将图像从灰度转换为彩色托盘

时间:2015-06-16 04:17:25

标签: java if-statement for-loop colors

我正在制作一个程序,我必须将灰度图像转换为不同颜色的彩色图像。

例如,灰度图像看起来像黑白图像,而最终输出应如下所示:

color pallete effect

我发现我应该使用带有条件状态(&&或||)的if语句。但是我很难弄清楚要在if语句中添加什么来创建这种效果。你可以在我的程序中看到我试图启动它,但如果我打印出来的声明没有做任何事情。如果有人可以帮助我,那就太棒了!

由于

我的代码:

import java.awt.*;
public class ConvertColor
{
    public static void main(String [] args) 
    {
        Picture pictureObj = new Picture("WashingtonMonument.png");     //creates a new Picture object representing the file in the parameter list                 
        pictureObj.explore();                                           //explore the Picture object which is currently the unaltered original image
        int redValue = 0; int greenValue = 0; int blueValue = 0;  int luminance = 0;      //declare and initialize the variables that hold the red, green, and blue values (0-255)

        Pixel pixelSource1 = new Pixel(pictureObj, 0,0);
        Color pixelColor = null;

        for(int y=0; y< pictureObj.getHeight(); y++)
        {
            for(int x=0; x< pictureObj.getWidth(); x++)
            {
                pixelSource1 = pictureObj.getPixel(x,y);
                pixelColor = pixelSource1.getColor();
                redValue = pixelColor.getRed();
                blueValue = pixelColor.getBlue();
                greenValue = pixelColor.getGreen();
                luminance = (int)((redValue * .5));

                pixelSource1.setColor(new Color(luminance, luminance, luminance));
            }
        }

        if(redValue > 50 && blueValue < 190)
            greenValue = (int) .5 * (pixelColor.getGreen());


        pictureObj.write("grayWashingtonMonument.png");
        pictureObj.show();
    }
}

1 个答案:

答案 0 :(得分:0)

要使用从较亮到较暗的值将灰色转换为颜色,以下是使用switch / case语句的解决方案:

sortBy(lambda (x, y): y, x)

对于13种灰度,我们有相应的颜色。

回答告诉我它是否运作良好,因为我自己无法测试。但逻辑是正确的。