как использовать setRGB () после изменения пикселей? Нужно ли использовать шестнадцатеричное? - PullRequest
0 голосов
/ 26 августа 2010

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

public void rootCalc(){//go through the rows and columns                            for(int x=grayscale_orig.getWidth() - 1; x >= 1; x--)
 {
  for (int y = grayscale_orig.getHeight() - 1; y >= 0; y--)
  {
      //this is the pixel array
      int[] rgb1 = getColors(grayscale_orig.getRGB(x, y));
      for(int g=0; g<rgb1.length;g++) 
      {   //take the square root of each pixel value
       v=255*(Math.sqrt(rgb1[g])/Math.sqrt(255));
//scale the squared value back into the 0-255 range and set the value
       grayscale.setRGB(x,y,(int)v);
      }
  }
 }}

У меня вопрос, как я могу установить и отобразить измененные пиксели в коде setRGB(). Когда я вставляю int - (int) v, изображение становится черным. Нужно ли менять int на шестнадцатеричное? Я пытался сделать что-то вроде этого: v=255*(Math.sqrt(rgb1[g]) / Math.sqrt(255)); String vstring=Double.toHexString(v); и не позволил бы мне ввести строку в setRGB (); = \

1 Ответ

1 голос
/ 26 августа 2010

Не существует такой вещи, как "шестнадцатеричный" - целое число - это просто число.Мы обычно используем десятичную запись в нашем коде, и она на самом деле просто сохраняет двоичную систему - однако, это просто число, и вы не можете просто «преобразовать его в шестнадцатеричное».

Проблема с вашим кодом, хоть.Вы вызываете setRGB один раз для красного компонента цвета, затем один раз для зеленого компонента цвета и затем еще раз для синего компонента (я полагаю, что в любом случае это тот порядок).Однако setRGB хочет, чтобы одно целое число представляло цвет целом .

Вы можете вычислить такое целое число вручную, но проще сделать объект Color из этих отделений цвета изатем, чтобы получить значение для setGRB, вызывая getRGB для Color.

...