在Android中将字节渲染为位图

我从JNI调用获取一个字节数组,并试图用它构造一个Bitmap对象。

我的问题是,以下代码返回null。

byte[] image = services.getImageBuffer(1024, 600); Bitmap bmp = BitmapFactory.decodeByteArray(image, 0, image.length); 

关于它的任何提示?

PS:像素布局是BGR,而不是RGB。

该文档说,如果图像无法解码,该方法将返回“null”。 你可以试试:

 byte[] image = services.getImageBuffer(1024, 600); InputStream is = new ByteArrayInputStream(image); Bitmap bmp = BitmapFactory.decodeStream(is); 

即使我不认为它会改变任何东西..试着看看android.graphics.BitmapFactory.Options以及

decodeByteArray确实不适用于这种格式。 我手动从BGR更改为RGB。

  byte[] image = services.getImageBuffer(1024, 600); Bitmap bmp = Bitmap.createBitmap(1024, 600, Bitmap.Config.RGB_565); int row = 0, col = 0; for (int i = 0; i < image.length; i += 3) { bmp.setPixel(col++, row, image[i + 2] & image[i + 1] & image[i]); if (col == 1024) { col = 0; row++; } 

然而,

 for (i < image.length) 。。。bmp.setPixel(image[i + 2] & image[i + 1] & image[i]); 

可以引起:

08-29 14:34:23.460:ERROR / AndroidRuntime(8638):java.lang.ArrayIndexOutOfBoundsException