在Android中将字节[]渲染为位图

Mar*_*los 6 java android

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

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

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

关于它的任何提示?

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

Mar*_*los 1

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

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

然而,

\n\n
for (i < image.length) \xe3\x80\x82\xe3\x80\x82\xe3\x80\x82bmp.setPixel(image[i + 2] & image[i + 1] & image[i]); \n
Run Code Online (Sandbox Code Playgroud)\n\n

可以引起:

\n\n
\n

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

\n
\n