gpt4 book ai didi

java - 使用 DataBufferInt 更改 bufferedImage 中的亮度

转载 作者:行者123 更新时间:2023-12-01 13:53:18 24 4
gpt4 key购买 nike

我必须读取一些图像,然后我必须更改该图像的亮度和对比度我创建主类和构造函数,其中包含面板、 slider 和其他内容,我向 slider 添加了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 的值并在面板上显示新图像

最佳答案

您应该使用 RescaleOp 来执行此操作。请参阅Change brightness of image using RescaleOp .

关于java - 使用 DataBufferInt 更改 bufferedImage 中的亮度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19799776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com