Java 无alpha通道的Android位图像素字节数组

Java 无alpha通道的Android位图像素字节数组,java,android,bitmap,rgb,Java,Android,Bitmap,Rgb,我正在尝试获取像素的字节数组。我用的是ARGB_8888 decodeByteArray函数。getPixels()或copyPixelsToBuffer(), 以R G B a形式返回数组。是否可以只从它们中获取RGB,而不创建新数组和复制我不需要的字节。我知道有一个RGB_565,但它不是我的情况下,我需要每种颜色一个字节的最佳选择 谢谢。使用color=bitmap.getPixel(x,y)在指定位置获取颜色整数。接下来,使用color类中的red(color)、green(color)

我正在尝试获取像素的字节数组。我用的是ARGB_8888 decodeByteArray函数。getPixels()或copyPixelsToBuffer(), 以R G B a形式返回数组。是否可以只从它们中获取RGB,而不创建新数组和复制我不需要的字节。我知道有一个RGB_565,但它不是我的情况下,我需要每种颜色一个字节的最佳选择


谢谢。

使用
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();
int-width=bitmap.getWidth();
int height=bitmap.getHeight();
ByteBuffer b=ByteBuffer.allocate(宽*高*3);
对于(int y=0;y