Converting bitmap to byteArray android Converting bitmap to byteArray android arrays arrays

Converting bitmap to byteArray android


You can use copyPixelsToBuffer() to move the pixel data to a Buffer, or you can use getPixels() and then convert the integers to bytes with bit-shifting.

copyPixelsToBuffer() is probably what you'll want to use, so here is an example on how you can use it:

//b is the Bitmap//calculate how many bytes our image consists of.int bytes = b.getByteCount();//or we can calculate bytes this way. Use a different value than 4 if you don't use 32bit images.//int bytes = b.getWidth()*b.getHeight()*4; ByteBuffer buffer = ByteBuffer.allocate(bytes); //Create a new bufferb.copyPixelsToBuffer(buffer); //Move the byte data to the bufferbyte[] array = buffer.array(); //Get the underlying array containing the data.


instead of the following line in @jave answer:

int bytes = b.getByteCount();

Use the following line and function:

int bytes = byteSizeOf(b);protected int byteSizeOf(Bitmap data) {if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR1) {    return data.getRowBytes() * data.getHeight();} else if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {    return data.getByteCount();} else {      return data.getAllocationByteCount();}


BitmapCompat.getAllocationByteCount(bitmap);

is helpful to find the required size of the ByteBuffer