可能な限り迅速にピクセル値を設定するために、タイプの基礎を使用しようとしてDataBufferByte
います。BufferedImage
TYPE_3BYTE_BGR
多分私は理解していないかもしれませんが、次のことを行うと...
byte[] imgBytes = ((DataBufferByte) img.getData().getDataBuffer()).getData();
...参照ではなく、バイト[]のコピーを取得しているようです。たとえば、私が実行すると...
System.out.println(System.identityHashCode(imgBytes));
System.out.println(System.identityHashCode((DataBufferByte) img.getData().getDataBuffer()).getData());
... 2 つの明らかに異なるオブジェクト ハッシュを取得します。私が間違っていなければ、これは基になる byte[] への参照ではなく、コピーを取得していることを示しています。この場合、どうすればDataBufferByte
直接編集できますか???
または、ピクセルを間違って設定しているだけかもしれません... imgBytes にピクセルを設定すると、BufferedImage に対して何もしないようです。byte[] を取得したら、次のように各ピクセル値を設定します。
imgBytes[intOffset] = byteBlue;
imgBytes[intOffset+1] = byteGreen;
imgBytes[intOffset+2] = byteRed;
私には、これで問題ないように思えます。この方法でピクセルをうまく読み取ることができるので、同じ方法でピクセルを書き込むことができるはずです!