2016-10-09 2 views
-1

私のJavaプロジェクトでは、8ビット(0,225)グレースケールイメージを3ビット(0,7)に変換するメソッドが必要です。何か案は?各ピクセルが8ビットのグレースケールイメージを、各ピクセルのみの3ビット表現を持つイメージに変換する方法はありますか?

私は、このメソッドを使用しますが、それは私のスレッド「メイン」java.lang.ArrayIndexOutOfBoundsExceptionで

例外与える: 範囲外の座標を!

image.getRaster().setSample(x, y, image.getRaster().getSample(x,y, 0)/32) 
+1

「動作しません」というフレーズは、私たちにはあまり言いません。これは役に立ちましたでしょうか?[良い質問をするにはどうすればいいですか?](http://stackoverflow.com/help/how-to-ask) – MJH

+0

サンプル数を減らすためにサンプルを変更しても、イメージは実際には3ビットグレースケールイメージに変更されません。イメージ・データ・バッファは、以前と同じピクセル当たりビット数が変わりません。 ---ピクセル "カラー"(グレイレベル)を近似したままにするには、ビットをシフトしないで下位ビットをクリアする必要がありますので、 'sample = sample&0xE0'を使用してください。 – Andreas

答えて

0

私はあなたが単純に32で割ることは、あなたに整数を与えるつもりはないされていることを忘れてしまったと思います。 その値をINTEGERに解析しようとすると、問題を解決する(または解決しない)可能性があります。

エラーは配列のサイズに関するものなので、イメージの長さと高さの制限から外れていないことを確認してください。

関連する問題