Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 操纵像素颜色以创建日落_Java_Image_For Loop_Pixel_Pixels - Fatal编程技术网

Java 操纵像素颜色以创建日落

Java 操纵像素颜色以创建日落,java,image,for-loop,pixel,pixels,Java,Image,For Loop,Pixel,Pixels,我必须创建一个程序来操纵图像的颜色像素,以在背景中创建日落的外观。我知道要做到这一点,我必须增加图片中红色的数量,但每当我对其进行编程时,都会导致一个错误,即: java.lang.IllegalArgumentException: Color parameter outside of expected range: Red(in java.awt.Color) 我的程序如下所示: import java.awt.*; public class TrueColors2 { public

我必须创建一个程序来操纵图像的颜色像素,以在背景中创建日落的外观。我知道要做到这一点,我必须增加图片中红色的数量,但每当我对其进行编程时,都会导致一个错误,即:

java.lang.IllegalArgumentException:
Color parameter outside of expected range: Red(in java.awt.Color)
我的程序如下所示:

import java.awt.*;
public class TrueColors2
{
   public static void main(String[] args)
   {
       Picture pictureObj = new Picture("WashingtonMonument.png");
       //picutreObj.explore();
       int redValue = 0; int greenValue = 0; int blueValue = 0;

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

       for(int y = 0; y < pictureObj.getHeight(); y++)
       {
           for(int x = 0; x < pictureObj.getWidth(); x++)
           {
               targetPixel = pictureObj.getPixel(x,y);
               pixelColor = targetPixel.getColor();

               redValue = pixelColor.getRed();
               greenValue = pixelColor.getGreen();
               blueValue = pixelColor.getBlue();

               pixelColor = new Color(redValue, greenValue, blueValue);
               pixelColor = new Color(100 + pixelColor.getRed(),
                                      pixelColor.getGreen(),
                                      pixelColor.getBlue());
               targetPixel.setColor(pixelColor);

           }
       }


       pictureObj.write("ThirdWashingtonMonument.png");
       pictureObj.show();

   }   
}
import java.awt.*;
公共类TrueColors 2
{
公共静态void main(字符串[]args)
{
Picture pictureObj=新图片(“washingtonmonment.png”);
//picutreObj.explore();
int redValue=0;int greenValue=0;int blueValue=0;
像素targetPixel=新像素(pictureObj,0,0);
颜色像素颜色=空;
对于(int y=0;y
有人能帮我找出问题所在,并帮我找出如何创造日落的效果吗?
谢谢

当您在红色值上加100时,您可能在某个点上超过了最大值255。在添加100之前,应该考虑检查<代码> PixelCuff.GETRED()/CUTE的当前值。

如果图片周围有多个不同的红色值,会怎么样?@我相信会有。你必须决定你想用什么算法来达到想要的效果。我只是指出,无论你做什么决定,你都必须确保在提供红色值时不超过255。正如已经指出的,你超出了允许的“红色”组成部分。您可以将其更改为新颜色(Math.min(255100+pixelColor.getRed(),…)
,但是。。。我不确定这是否是理想的效果。只是让整个画面稍微红一点看起来不像日落,但是。。。像一幅略带红色的画。如果您的问题是如何创建日落效果(而不是为什么会收到错误),那么您应该详细说明这一部分。