0

いくつかの画像を読み取る必要があり、次にこの画像の明るさとコントラストを変更する必要があります。パネル、スライダー、その他のものがあるメインクラスとコンストラクターを作成し、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 の値を変更して、その新しい画像をパネルに表示するにはどうすればよいですか?

4

1 に答える 1

1

これを行うには、RescaleOp を使用する必要があります。RescaleOp を使用してイメージの明るさを変更するを参照してください。

于 2013-11-06T15:47:25.117 に答える