我正在尝试将字节数组解码为要在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个值。
有人可以告诉我为什么会这样吗?
答案 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);
}
希望这有助于并享受您的工作