DataBufferバイト配列からR G B色を取得する

これらの数行は、画像のすべてのピクセルの配列を取得します。

ImageInputStream is = ImageIO.createImageInputStream(f);
Iterator iter = ImageIO.getImageReaders(is);
ImageReader imageReader = (ImageReader) iter.next();
imageReader.setInput(is);
BufferedImage image = imageReader.read(0);
final byte[] a = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();

ピクセル(例えば0,0)の実際のR G Bチャンネルを検索するにはどうすればよいですか?

EDIT I'm using this array because of faster access to the image. That's why I'm not using higher APIs' methods like getRGB or getSample...

3

1 答え

image.getType()== TYPE_INT_RGB とすると、次のような配列になります:

R, G, B, R, G, B, R, G, B, ...

pixel(x、y)の値には

int width = image.getWidth();

...

byte R = a[3*(x+y*width)];
byte G = a[1+3*(x+y*width)];
byte B = a[2+3*(x+y*width)];

ドキュメントを参照してください。

アクセス方法は基本的に同じですが、色の順序やアルファチャンネルを追加するだけです。しかし、これらの4チャンネルのピクセルでは、ピクセル(x、y)の最初のチャンネルのフォーミュラーを

byte A = a[4*(x+y*width)];
6
追加された
単純なバイト配列でgetPixel()メソッドを呼び出すにはどうすればいいですか?
追加された 著者 myro,
はい、本当にすばやいアクセスが必要です。私は質問を編集した
追加された 著者 myro,