2013-10-26 4 views
0

я есть:изображения ползунок яркости Java

BufferedImage image; 
//few lines of code 
public void stateChanged(ChangeEvent e) 
{ 
for (int i = 0; i < image.getWidth(); i++) { 
     for (int j = 0; j < image.getHeight(); j++) 
     { 
      Color color = new Color(image.getRGB(i, j)); 
      int r, g, b; 
      val = sliderBrightness.getValue(); 
      r = color.getRed() + val; 
      g = color.getGreen() + val; 
      b = color.getBlue() + val; 
     } 
    } 

я не имею ни малейшего представления, как решить эту проблему, что я должен изменить, что изображение будет реагировать на яркость JSlider?

ответ

0
public void stateChanged(ChangeEvent e) 
{ 

for (int x = 0; x < image.getWidth(); x++) { 
    for (int y = 0; y < image.getHeight(); y++) 
     { 
     Color color = new Color(image.getRGB(x, y)); 

     int r, g, b; 
     val = sliderBrightness.getValue(); 

     r = checkColorRange(color.getRed() + val); 
     g = checkColorRange(color.getGreen() + val); 
     b = checkColorRange(color.getBlue() + val); 

     color = new Color(r, g, b); 
     image.setRGB(x, y, color.getRGB()); 
     border.setIcon(new ImageIcon(image.getScaledInstance(350, 350, Image.SCALE_SMOOTH))); 
     border.repaint(); 
     } 
    } 
} 
public int checkColorRange(int newColor){ 
    if(newColor > 255){ 
     newColor = 255; 
    } else if (newColor < 0) { 
     newColor = 0; 
    } 
    return newColor; 
} 

Также вы должны использовать x и y, вместо i и j, для ясности.

1

Как показано на рисунке here, используйте java.awt.image.RescaleOp для настройки цветовых полос изображения в зависимости от положения ползунка. Несмотря на название, AlphaTest, в этом примере используется конструктор, который применяет «ко всем цветным (но не альфа-компонентам)» в BufferedImage ».

image

Смежные вопросы