ソフトウェア開発したい日記

「面白い!」と思った頭の体操や、数学の問題を載せていきます
その他ロードバイクででかけた先の写真や、ソフト開発のメモ等

Javaでコントラスト調整とか

2011年06月04日 16時14分31秒 | ソフト開発日記
今までは、コントラスト値を変更するたびに
画素値が入った配列をスケーリング計算して、
drawLine()で点を打つという愚かな方法をとってました。

BufferedImageを利用して簡単・高速にコントラスト調整する方法を見つけたので、メモ。
RescaleOPクラスを利用します。
また、今回はグレースケール画像に対してなので
bufferedImageのimageTypeを"TYPE_BYTE_GRAY"としています。


BufferedImage buffer1, buffer2;
public void paintComponent(Graphics g) {
super.paintComponent(g);

Graphics2D g2 = (Graphics2D)g;
if(buffer1 == null){
buffer1 = new BufferedImage(this.getWidth(), this.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
buffer2 = new BufferedImage(this.getWidth(), this.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
}
Graphics2D buf = buffer.createGraphics();

/**
初回のみbuf.drawLine()で点を打っていく。
(あるいは画像を読み込む。)
*/

RescaleOP rop = new RescaleOP(scale, 0.0f, null);
rop.filter(buffer1, buffer2);
g2.drawImage(buffer2, 0, 0, this);

}

float型の変数scaleは初期値1.0fで、
スライダ等で0.0f~2.0fくらい変動できるようにしたらいい感じになりました。

最新の画像もっと見る