2016-07-07 18 views
0

ピクセルのバイト配列を取得しようとしています。私は decodeByteArray関数のARGB_8888を使用しています。 getPixels()またはcopyPixelsToBuffer()、 は、R G B A形式の配列を返します。新しい配列を作成したり、必要のないバイトをコピーすることなく、R G Bのみを取得することは可能ですか?私はRGB_565があることを知っていますが、色ごとにバイトが必要な私の場合には最適ではありません。アルファチャンネルのないAndroidビットマップピクセルのバイト配列

ありがとうございました。

答えて

0

color=bitmap.getPixel(x,y)を使用して、指定された位置のColor整数を取得します。次に、[0..255]の範囲の各色の値を表すColorクラスのred(color),green(color)およびblue(color)のメソッドを使用します。

アルファチャンネルに関しては、他のすべての色に比率を掛けることができます。ここで

は実装例です:

int width = bitmap.getWidth(); 
    int height = bitmap.getHeight(); 
    ByteBuffer b = ByteBuffer.allocate(width*height*3); 
    for (int y=0;y<height;y++) 
     for (int x=0;x<width;x++) { 
      int index = (y*width + x)*3; 
      int color = bitmap.getPixel(x,y); 
      float alpha = (float) Color.alpha(color)/255; 
      b.put(index, (byte) round(alpha*Color.red(color))); 
      b.put(index+1, (byte) round(alpha*Color.green(color))); 
      b.put(index+2, (byte) round(alpha*Color.blue(color))); 
     } 
    byte[] pixelArray = b.array();