public static void main(String[] args)
{
Picture pictObj = new Picture("C:\\caterpillar.jpg");
pictObj.swapRGB(2);
pictObj.show();
}
public void swapRGB(){
Pixel[] pixelArray = this.getPixels();
Pixel pixel = null;
int old_green = 0;
int old_blue = 0;
int old_red = 0;
for(int i = 0; i < pixelArray.length;i++){
pixel = pixelArray[i];
old_green = pixel.getGreen();
old_blue = pixel.getBlue();
old_red = pixel.getRed();
pixel.setRed(old_green);
pixel.setGreen(old_blue);
pixel.setBlue(old_red);
}
}
public void swapRGB(int numswaps) {
Pixel[] pixelArray = this.getPixels();
Pixel pixel = null;
int old_green = 0;
int old_blue = 0;
int old_red = 0;
int count = 0;
while(count < numswaps) {
for(int i = 0; i < pixelArray.length; i++) {
pixel = pixelArray[i];
//getting the green, red and blue value of the pixels
old_green = pixel.getGreen();
old_blue = pixel.getBlue();
old_red = pixel.getRed();
//Swapping Values of colors
pixel.setRed(old_green);
pixel.setGreen(old_blue);
pixel.setBlue(old_red);
pixel = pixelArray[i];
count ++;
}
}
该程序改变图片中像素的颜色;它交换红色,绿色,蓝色值。我的问题是,无论numswaps的值是多少,它都会发生一次。 如果我两次调用函数swapRGB()或swapRGB(numswaps)它会改变颜色,但这不是我希望颜色发生变化的方式,它应该根据numswaps的数量进行更改。 swapRGB()和swapRGB(numswaps)函数都在同一个类中。
谢谢。
答案 0 :(得分:1)
不是答案,但评论的时间太长了。
您可以更改swapRGB(int numswaps)
来执行此操作:
public void swapRGB(int numswaps) {
for (int i = 0; i < numswaps; ++i) {
swapRGB();
}
}
代码少得多,而且这也意味着您只需要让swapRGB()
按照您的意愿工作。