2012-02-22 29 views

答えて

2
BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); 

次に、ピクセルを再度設定します。

bufferedImage.setRGB(x, y, your_value); 

PS:コメントで述べたように、@TacticalCoder

+1

イメージ全体をループして一度に1ビットずつ設定しないでください。バッファ全体を一度にコピーする必要があります。 –

+1

これは、バッファリングされた画像のすべてのピクセルを設定するひどい方法であり、受け入れられた回答であってはなりません。 – tofiffe

-1

setRGBメソッドを使用して、新しいイメージ内のピクセルのRGB(int)値を設定できます。

+0

どのように私はbufferedimageを作成するのですか? – Saurabh

19

からの回答を使用してください、私は方法のgetRGB()を使用したBufferedImageからのピクセルを取得します。 ピクセルはdata []という配列に格納されます。

これは恐らく非常に遅いことに注意してください。 BufferedImageがサポートしている場合は、代わりに基底のint []にアクセスしてそこからピクセルを直接コピー/読み込みたい場合があります。例えば

は、しっかりと新しいのBufferedImageの基礎となるのint []にあなたのデータ[]をコピーするには:

もちろん
BufferedImage bi = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); 
final int[] a = ((DataBufferInt) res.getRaster().getDataBuffer()).getData(); 
System.arraycopy(data, 0, a, 0, data.length); 

はあなたが確認すること、あなたのデータ[] BufferedImage(この例ではARGB)と同じ表現のピクセルが含まれています。

+1

これは良い答えです。私は、setRGBが何にも最適な解決策であるとは考えていません。 – MCllorf

+0

あなたのコードに間違いがあると思います: 'res.getRaster'ではなく' bi.getRaster'を意味しますか? – Warkst

関連する問題