在处理中更改图像上的颜色像素后,如何返回原始图像?

时间:2012-02-23 19:41:47

标签: processing

在下面的程序中,我尝试通过点击鼠标来改变图像的像素颜色,但是,我试图通过第二次点击返回到原始图像,但我一直无法找到这样做的严谨论据......

PImage pic;

void setup(){
  pic=loadImage("road.jpg"); // Loading the image from a folder "date" attached to the sketch
  size (pic.width,pic.height);
image(pic,0,0);
}
void draw(){
}
void mousePressed(){

  loadPixels();
  pic.loadPixels();
        for (int y = 0; y < height; y++ ) {
          for (int x = 0; x < width; x++ ) {
            int loc = x + y*width;
             if(red(pixels[loc]) >170 && red(pixels[loc])<215){ 
               pixels[loc]=color(187,0,0);    //changing the pixels color from red to green
               }               

             }          
    }
    for (int y = 0; y < height; y++ ) {
          for (int x = 0; x < width; x++ ) {
            int loc = x + y*width;
             if(green(pixels[loc]) >120 && green(pixels[loc])<160){ 
               pixels[loc]=color(0,192,0);    //changing the pixels color form green to red
             }
          }
    }       
       // I belive that here I have to add an argument that returns to the original image 
  updatePixels();
}

我将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:1)

我通常为这类事情做的是创建/ two / images,一个是文件(目标),另一个是空白图像。

PImage target;
PImage destination;
target = loadImage("file.jpg");
destination = createImage(target.width, target.height, RGB);

然后我将目标的信息复制到目的地的像素中。如果我想换回,我可以打电话给目标;我可以通过将它们保存为两个单独的图像来自由地来回交换。

例如,在openprocesing上查看我的草图:http://openprocessing.org/visuals/?visualID=49301