【问题标题】:Changing brightness in bufferedImage with DataBufferInt使用 DataBufferInt 更改 bufferedImage 中的亮度
【发布时间】:2013-11-05 21:52:25
【问题描述】:

我必须阅读一些图像,然后我必须更改该图像的亮度和对比度 我创建了面板、滑块和其他东西所在的主类和构造函数,我将 changeListener 添加到滑块以获取当前值。我的 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 的值并在面板上显示新图像

【问题讨论】:

    标签: java file-io paint bufferedimage brightness


    【解决方案1】:

    您应该使用 RescaleOp 来执行此操作。见Change brightness of image using RescaleOp

    【讨论】:

      猜你喜欢
      • 2013-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多