使用JSlider更改图像亮度

时间:2018-05-18 16:09:24

标签: java jslider

        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 :(得分:1)

您永远不会使用 val 的值。为什么不这样做:image brightness slider 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),因此您无法再添加蓝色来增加亮度。