在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