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)都在同一类中。
谢谢。
最佳答案
并不是真正的答案,但评论太久。
您可以更改swapRGB(int numswaps)
来执行此操作:
public void swapRGB(int numswaps) {
for (int i = 0; i < numswaps; ++i) {
swapRGB();
}
}
它的代码更少了,这也意味着您只需要根据需要使
swapRGB()
工作。