生成的位图只有零值

时间:2013-05-19 12:02:22

标签: android image bitmap

我正在尝试将字节数组解码为要在android中使用的位图。 我用于解码的字节数组是由名为GlReadPixels的OpenGl conmmand生成的,内部数据是正确的。

    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个值。

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

1 个答案:

答案 0 :(得分: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);
}

希望这有助于并享受您的工作