我正在制作一个程序,我必须将灰度图像转换为不同颜色的彩色图像。
例如,灰度图像看起来像黑白图像,而最终输出应如下所示:
我发现我应该使用带有条件状态(&&或||)的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();
}
}
答案 0 :(得分:0)
要使用从较亮到较暗的值将灰色转换为颜色,以下是使用switch / case语句的解决方案:
sortBy(lambda (x, y): y, x)
对于13种灰度,我们有相应的颜色。
回答告诉我它是否运作良好,因为我自己无法测试。但逻辑是正确的。