我正在尝试获取像素的字节数组。我正在使用ARGB_8888 decodeByteArray函数。 getPixels()或copyPixelsToBuffer(), 以R G B A形式返回一个数组。是否有可能只从它们获得R G B,而无需创建新数组并复制我不需要的字节。我知道有一个RGB_565,但对于我需要每种颜色一个字节的情况来说它并不是最佳的。
感谢。
答案 0 :(得分:-1)
使用color=bitmap.getPixel(x,y)
获取指定位置的颜色整数。接下来,使用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();