java - 在 RGB 的 'red' 值上添加一定量以创建日落效果,请帮忙。 (java)

标签 java colors rgb pixel

好的,所以我想要一个程序,可以逐行浏览图片,并向红色值 (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/

相关文章:

java - 是什么导致我的循环仅在第一次迭代中忽略此 "\t"?

JavaFX 将组件添加到列表中,动态更改其内容

java - 使用 Android 创建强密码生成器

algorithm - 有没有什么算法可以在图片上按像素颜色查找线条?

ffmpeg - 如何将 YUV420p 的 RGB 转换为 ffmpeg 编码器?

java - 使用 TableView.CONSTRAINED_RESIZE_POLICY 时 TableView header 宽度错误

Python tkinter 按钮在按下时返回黑色

colors - GIMP - Alpha 到颜色

php - 在 PHP 中生成 RGB 分级颜色的算法

python - 代码检测网络摄像头时,cv2 模块未捕获图像