Java 使用DataBufferInt更改BuffereImage中的亮度

Java 使用DataBufferInt更改BuffereImage中的亮度,java,file-io,paint,bufferedimage,brightness,Java,File Io,Paint,Bufferedimage,Brightness,我必须读一些图像,然后我必须改变这个图像的亮度和对比度 我创建了主类和构造函数,其中有面板、滑块和其他东西,我向滑块添加了changeListener以获取当前值。My imagePanel是该类的新对象: public class Obrazek extends JPanel{ public static BufferedImage img = null; public Obrazek() { super(); try { img = ImageIO

我必须读一些图像,然后我必须改变这个图像的亮度和对比度 我创建了主类和构造函数,其中有面板、滑块和其他东西,我向滑块添加了changeListener以获取当前值。My imagePanel是该类的新对象:

public class Obrazek extends JPanel{

  public static BufferedImage img = null;

  public Obrazek() {
    super();
    try {
        img = ImageIO.read(new File("D:\\ja.jpg"));
    } catch (IOException e) {}
}
@Override
public void paint(Graphics g) {
    g.drawImage(img, 0, 0, null);
}
}
这是我的加载按钮

private void przyciskWczytaj(java.awt.event.ActionEvent evt) {                                 
    int odpowiedz = jFileChooser1.showOpenDialog(this);
if (odpowiedz == jFileChooser1.APPROVE_OPTION) {
    File file = jFileChooser1.getSelectedFile();
    try {
           BufferedImage im = ImageIO.read(new File(file.getAbsolutePath()));
       Obrazek.img = im;
    } catch (IOException ex) {
            System.out.println("Error");
    }
}
}  
现在我想创建一个类,在这个类中我将改变亮度。我必须使用,但我不知道如何使用它:

BufferedImage(256, 256, Bufferedmage.TYPE_INT_RGB)
要获得图像的每个像素,我需要执行以下操作:

int rgb []=((DataBufferInt)img.getRaster().getDataBuffer()).getData();

接下来的问题是:如何更改每个r、g、b的值,并在面板上显示新图像?您应该使用“重新缩放”来执行此操作。看