Изменить яркость изображения с помощью JSlider - PullRequest
0 голосов
/ 18 мая 2018
        slider.addChangeListener(new ChangeListener() {
        public void stateChanged(ChangeEvent e) {

            int val = slider.getValue();

            for(int x = 0; x < image.getWidth(); x++) {
                for(int y = 0; y < image.getHeight(); y++) {

                        image.setPixel(x, y, image.getPixel(x, y).brighter());
                        frame.repaint();
                }
            }
        }
    });

Так что это мой ChangeListener, который я использую для изменения яркости изображения.Работает прилично и изображение становится ярче.У меня проблема в том, что неважно, как я двигаю ползунок, потому что в любом случае он становится ярче.Я хочу, чтобы это работало так, чтобы изображение становилось ярче только при перемещении ползунка вправо.

1 Ответ

0 голосов
/ 18 мая 2018

Вы никогда не используете значение val .Почему бы не сделать что-то вроде этого: Ползунок яркости изображения Java

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 = slider.getValue();
         r = ((color.getRed() + (val/20)) % 255);
         b = ((color.getBlue() + (val/20)));
         g = ((color.getGreen() + (val/20)) % 255);
         if(b > 255) b = 255;
         color = new Color(r, g, b);
         image.setRGB(x, y, color.getRGB());
    }
}

Я проверил это на фоне, а не по пикселям, и начальный цвет был синим.Вам придется изменить приведенный выше код в зависимости от начального цвета, поскольку яркость увеличивается за счет добавления большего количества цветов.Синий имеет начальное значение (0, 0, 255), поэтому вы не можете добавить больше синего для увеличения яркости.

...