2016-07-07 29 views
0

我試圖獲取一個像素的字節數組。我使用ARGB_8888作爲 decodeByteArray函數。 getPixels()或copyPixelsToBuffer(), 以R G B A形式返回數組。是否有可能只從他們獲得R G B,而不創建一個新的數組並複製我不需要的字節。我知道有一個RGB_565,但對於我需要每種顏色字節的情況,這並不是最佳選擇。沒有alpha通道的Android位圖像素字節數組

感謝。

回答

0

使用color=bitmap.getPixel(x,y)可以獲得指定位置的Color整數。接下來,使用Color類中的red(color),green(color)blue(color)方法,該方法表示[0..255]範圍內的每個顏色值。

關於alpha通道,可以將其比率乘以每隔一種顏色。

下面是一個示例實現:

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(); 
相關問題