converting Java bitmap to byte array converting Java bitmap to byte array android android

converting Java bitmap to byte array


Try something like this:

Bitmap bmp = intent.getExtras().get("data");ByteArrayOutputStream stream = new ByteArrayOutputStream();bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);byte[] byteArray = stream.toByteArray();bmp.recycle();


CompressFormat is too slow...

Try ByteBuffer.

※※※Bitmap to byte※※※

width = bitmap.getWidth();height = bitmap.getHeight();int size = bitmap.getRowBytes() * bitmap.getHeight();ByteBuffer byteBuffer = ByteBuffer.allocate(size);bitmap.copyPixelsToBuffer(byteBuffer);byteArray = byteBuffer.array();

※※※byte to bitmap※※※

Bitmap.Config configBmp = Bitmap.Config.valueOf(bitmap.getConfig().name());Bitmap bitmap_tmp = Bitmap.createBitmap(width, height, configBmp);ByteBuffer buffer = ByteBuffer.wrap(byteArray);bitmap_tmp.copyPixelsFromBuffer(buffer);


Here is bitmap extension .convertToByteArray wrote in Kotlin.

/** * Convert bitmap to byte array using ByteBuffer. */fun Bitmap.convertToByteArray(): ByteArray {    //minimum number of bytes that can be used to store this bitmap's pixels    val size = this.byteCount    //allocate new instances which will hold bitmap    val buffer = ByteBuffer.allocate(size)    val bytes = ByteArray(size)    //copy the bitmap's pixels into the specified buffer    this.copyPixelsToBuffer(buffer)    //rewinds buffer (buffer position is set to zero and the mark is discarded)    buffer.rewind()    //transfer bytes from buffer into the given destination array    buffer.get(bytes)    //return bitmap's pixels    return bytes}