Converting bitmap to byteArray android
android, arrays, base64, bitmap
Solution
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 buffer
b.copyPixelsToBuffer(buffer); //Move the byte data to the buffer
byte[] array = buffer.array(); //Get the underlying array containing the data.
Problem
I have a bitmap that I want to send to the server by encoding it to base64 but I do not want to compress the image in either png or jpeg. Now what I was previously doing was. ``` ByteArrayOutputStream byteArrayBitmapStream = new ByteArrayOutputStream(); bitmapPicture.compress(Bitmap.CompressFormat.PNG, COMPRESSION_QUALITY, byteArrayBitmapStream); byte[] b = byteArrayBitmapStream.toByteArray(); //then simple encoding to base64 and off to server encodedImage = Base64.encodeToString(b, Base64.NO_WRAP); ``` Now I just dont want to use any compression nor any format plain simple byte[] from bitmap that I can encode and send to the server. Any pointers?