2016-07-07 52 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(); 
相关问题