Как вернуть пиксельные цвета обратно после их изменения? - PullRequest
0 голосов
/ 05 апреля 2019

Мне нужно добавить оттенок к изображению, а затем вернуть изображение к его первоначальному цвету. Я могу добавить оттенок, но не знаю, как вернуть изображение к исходному цвету.

Я хочу создать метод, в котором изображение сбрасывается до исходного цвета.

Покушение

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;


  }
}

1 Ответ

0 голосов
/ 05 апреля 2019

Как рекомендует MadProgrammer, вам необходимо либо сохранить копию оригинала, либо создать (двунаправленную) дельту для каждого изменения. Преимущество последнего состоит в том, что вы можете вернуться ко всем этапам редактирования, что-то вроде истории (CTRL + Z / Y во многих программах под окнами).

Для этого вам нужно создать объект, который хранит информацию об изменении пикселей и может быть применен или отменен. Поскольку вы перебираете все пиксели, и практически все пиксели будут затронуты, вы можете просто сохранить все изображение в истории. Это зависит от того, будут ли в вашей программе операции, которые изменят изображение более ограниченным образом, вместо того, чтобы вносить изменения в целое изображение.

@ Edit: Поскольку вы хотите вращаться между несколькими различными тонированными изображениями, просто выделите три буферизованных изображения и вращайте их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...