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.
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.
This one worked for me (for ARGB_8888 pixel buffer):
private Bitmap getBitmap(Buffer buffer, int width, int height) {
buffer.rewind();
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
bitmap.copyPixelsFromBuffer(buffer);
return bitmap;
}
来源:https://stackoverflow.com/questions/38639436/how-to-convert-bytebuffer-into-image-in-android