【问题标题】:How to revert pixel colors back after changing them?更改像素颜色后如何恢复像素颜色?
【发布时间】:2019-08-26 21:57:57
【问题描述】:

我需要为图片添加色调,然后将图片恢复为原始颜色。我可以添加色调,但不知道如何将图片恢复为原始颜色。

我想创建一个将图片重置为原始颜色的方法。

尝试

public void changeBlues(double param){
    Pixel[] pixelArray =  this.getPixels();
    Pixel pixel = null;
    int value = 0;
    int index = 0;
    
    if(param <= 0.0){
      System.out.println("Error! Parameter less than or equal to 0.0");
      return;
    }
    else if(param > 5.0){
      System.out.println("Error! Paramater is greater than five.");
      return;
    }
    
      
    
    //loop through all the pixels

    //get the current pixel
    while(index < (int)(pixelArray.length)){  
      if(param < 1.0){
        pixel = pixelArray[index];
        
        //get the value
        value = pixel.getBlue();
        
        // decrease the value by param
        value = (int)((value - (value * param)));
        
        // set he blue value of the current pixel to the new value
        pixel.setBlue(value);
        
        // increment the index
        index = index + 1;
      }
      
      pixel = pixelArray[index];
      
      //get the value
      value = pixel.getBlue();
      
      // decrease the value by param
      value = (int)((value + (value * param)));
      
      // set he blue value of the current pixel to the new value
      pixel.setBlue(value);
      
      // increment the index
      index = index + 1;
      
    
  }
}

【问题讨论】:

  • 您需要维护原始数据的副本或生成增量,以便了解更改的内容和方式
  • 我将如何维护原始数据的副本?

标签: java image colors


【解决方案1】:

按照 MadProgrammer 的建议,您需要保留原始副本,或为每次更改创建(双向)增量。后者的优点是,您可以恢复到编辑的所有阶段,有点像历史记录(在 windows 下的许多程序中为 CTRL + Z/Y)。

为此,您需要创建一个存储像素变化信息并且可以应用或恢复的对象。由于您遍历所有像素,实际上几乎所有像素都会受到影响,因此您可以将整个图像存储在历史记录中。这取决于您的程序中是否会有一些操作在更有限的基础上更改图像,而不是进行全图修改。

@编辑: 由于您想在多张不同的着色图片之间旋转,显然,只需对三张缓冲图片进行分类并旋转它们。

【讨论】:

  • 有一个我必须添加代码的程序。程序所做的是向用户索要一张图片,然后将用户选择的图片染成我编码的颜色。一秒钟后它会变成我编码的另一种颜色。然后它会做第三次。我以为我可以将某些像素增加一定百分比,然后将它们降低到相同的百分比,但我认为这行不通,因为当我减少一定百分比时,它将使用新值,因此不会返回如果有意义的话,原始值。
  • 我需要恢复到原始颜色的原因是因为当我每次运行时我只有颜色的代码虽然它只是将颜色混合在一起所以它不会着色我想要的颜色它着色。
  • 你是对的,它不会回到原来的颜色。虽然我仍然不完全理解其目的,但我想你会做一些类似颜色旋转效果的事情,就像视频一样。因此,只需存储您想要着色的 n(我相信 3)张不同的图片,然后旋转它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-07
  • 1970-01-01
  • 2017-09-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多