0

我正在尝试将字节数组解码为要在 android 中使用的位图。我用于解码的字节数组是由名为 GlReadPixels 的 OpenGl 命令生成的,并且里面的数据是正确的。

    MainActivity.dataInputStream.readFully(Image, 0,256 * 256 * 4);

//converting from rgba to argb
    for (int i = 0; i < Image.length - 1; i = i + 4) {
        aux = (Image[i + 3] & 0xFF);
    IntImage[i + 3] = (int) (Image[i + 2] & 0xFF);
    IntImage[i + 2] = (int) (Image[i + 1] & 0xFF);
    IntImage[i + 1] = (int) (Image[i] & 0xFF);
    IntImage[i] = aux;
     }

如果我这样做:bmp = Bitmap.createBitmap(IntImage, 256, 256,Config.ARGB_8888);或者这样:

bmp = Bitmap.createBitmap(256, 256, Config.ARGB_8888); bmp.setPixels(IntImage, 0, 256, 0, 0, 256, 256);,

结果位图将只有 0 个值。

有人可以告诉我为什么会这样吗?

4

1 回答 1

0

Bitmap.createBitmap 需要 256*256 大小的数组,你给它 256*256*4,因此你只给它一个部分,它看起来像这样,0x000000FF .. 0x000000RR,0x000000GG,如果你明白我的意思.

像这样改变你的 argb 函数

int[] imageARGB = new int[256 * 256];

for(int i = 0; i < imageARGB.length, i++){
    imageARGB[i] = Color.argb(yourAlpha, RR, GG, BB);
}

希望这对您有所帮助并享受您的工作

于 2013-05-19T12:45:09.233 回答