zelf zelf - 2 months ago 23
Android Question

How to convert ByteBuffer into image in Android

I am receiving jpg image through socket and it is sent as ByteBuffer
what I am doing is:

ByteBuffer receivedData ;
// Image bytes
byte[] imageBytes = new byte[0];
// fill in received data buffer with data
receivedData= DecodeData.mReceivingBuffer;
// Convert ByteByffer into bytes
imageBytes = receivedData.array();
//////////////
// Show image
//////////////
final Bitmap bitmap = BitmapFactory.decodeByteArray(imageBytes,0,imageBytes.length);
showImage(bitmap1);


But what is happening that it fails to decode the imageBytes and bitmap is null.

Also I got imagebytes as:
imageBytes: {-1, -40, -1, -32, 0, 16, 74, 70, 73, 70, 0, 1, 1, 1, 0, 96, 0, 0, 0, 0, -1, -37, 0, 40, 28, 30, 35, +10,478 more}

What would be the problem?
is it decoding problem?
or conversion from ByteBuffer to Byte array?

Thanks in advance for help.

Answer
ByteBuffer buf = DecodeData.mReceivingBuffer;
byte[] imageBytes= new byte[buf.remaining()];
buf.get(imageBytes);
final Bitmap bmp=BitmapFactory.decodeByteArray(imageBytes,0,imageBytes.length);
    showImage(bmp);

OR

// Create a byte array
byte[] bytes = new byte[10];

// Wrap a byte array into a buffer
ByteBuffer buf = ByteBuffer.wrap(bytes);

// Retrieve bytes between the position and limit
// (see Putting Bytes into a ByteBuffer)
bytes = new byte[buf.remaining()];

// transfer bytes from this buffer into the given destination array
buf.get(bytes, 0, bytes.length);

// Retrieve all bytes in the buffer
buf.clear();
bytes = new byte[buf.capacity()];

// transfer bytes from this buffer into the given destination array
buf.get(bytes, 0, bytes.length);

 final Bitmap bmp=BitmapFactory.decodeByteArray(bytes,0,bytes.length);
showImage(bmp);

USE ANY ONE ABOVE TO CONVERT BYTEBUFFER TO BYTE ARRAY AND CONVERT IT TO BITMAP AND SET IT INTO YOUR IMAGEVIEW.

Hope this will help you.

Comments