好的,所以我想要一个程序,可以逐行浏览图片,并向红色值 (RGB) 添加一定量以创建日落效果。唯一的问题是,当你获得不同的红色、绿色和蓝色值时,我无法将 50 添加到红色值来获得日落效果。下面的代码只是负责循环各行并更改像素值的部分。
for(int y=0; y < sunsetPic.getHeight(); y++)
{
for(int x = 0; x < sunsetPic.getWidth(); x++)
{
targetPixel = sunsetPic.getPixel(x,y);
pixelColor = targetPixel.getColor();
redValue = pixelColor.getRed();
greenValue = pixelColor.getGreen();
blueValue = pixelColor.getBlue();
pixelColor = new Color(redVlue + 50, greenValue, blueValue);
targetPixel.setColor(pixelColor);
}
}
如您所见,我不能仅向 redValue 添加 50 来创建日落效果。有人可以帮我想办法让我受到日落影响吗?
最佳答案
要实现日落效果,您需要做的不仅仅是添加一点红色。您很有可能还需要去除一些绿色和蓝色。这些去除可能是按比例去除,留下一定百分比的原始颜色。最灵活的技术是使用一个或多个颜色矩阵。这样您就可以根据输入颜色的线性组合独立调整每个输出颜色。通常,您包含 A 颜色,这意味着大多数颜色矩阵都是 4x5,第五个元素是添加或减去的常量,无论输入如何。
A code example is here ,并且根据您对保真度的需求,您可以多次调整变换矩阵,直到获得您想要的视觉效果。
关于java - 在 RGB 的 'red' 值上添加一定量以创建日落效果,请帮忙。 (java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6429817/