Home » Android » java – Converting array of int to Bitmap on Android

java – Converting array of int to Bitmap on Android

Posted by: admin May 14, 2020 Leave a comment

Questions:

I have an MxN array of ints representing colors (say RGBA format, but that is easily changeable). I would like to convert them to an MxN Bitmap or something else (such as an OpenGL texture) that I can render to the screen. Is there a fast way to do this? Looping through the array and drawing them to the canvas is far too slow.

How to&Answers:

Try this it will give you the bitmap .

 // You are using RGBA that's why Config is ARGB.8888 
    bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
 // vector is your int[] of ARGB 
    bitmap.copyPixelsFromBuffer(IntBuffer.wrap(vector));

EDIT:

 //OR , you can generate IntBuffer from following native method
  /*private IntBuffer makeBuffer(int[] src, int n) {
        IntBuffer dst = IntBuffer.allocate(n*n);
        for (int i = 0; i < n; i++) {
            dst.put(src[i]);
        }
        dst.rewind();
        return dst;
    }*/

Hope it will help you .

Answer:

Why not use Bitmap.setPixel? It’s even API level 1:

int[] array  = your array of pixels here...
int   width  = width of "array"...
int   height = height of "array"...

// Create bitmap
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);

// Set the pixels
bitmap.setPixels(array, 0, width, 0, 0, width, height);

You can play with offset/stride/x/y as needed.
No loops. No additional allocations.

Answer:

Yeah, sounds like you have all the info you need. If M is the width and N is the height, you can create a new bitmap with Bitmap.createBitmap, and you can fill in the ARGB values with the setPixels method which takes an int array.

Bitmap.createBitmap

Bitmap.setPixels