Encode and decode bitmap object in base64 string in Android
public static String encodeToBase64(Bitmap image, Bitmap.CompressFormat compressFormat, int quality){ ByteArrayOutputStream byteArrayOS = new ByteArrayOutputStream(); image.compress(compressFormat, quality, byteArrayOS); return Base64.encodeToString(byteArrayOS.toByteArray(), Base64.DEFAULT);}public static Bitmap decodeBase64(String input){ byte[] decodedBytes = Base64.decode(input, 0); return BitmapFactory.decodeByteArray(decodedBytes, 0, decodedBytes.length);}
Example usage:
String myBase64Image = encodeToBase64(myBitmap, Bitmap.CompressFormat.JPEG, 100);Bitmap myBitmapAgain = decodeBase64(myBase64Image);
Hope this will help you
Bitmap bitmap = BitmapFactory.decodeStream(this.getContentResolver().openInputStream(uri));
(if you are referencing URI to construct bitmap) OR
Resources resources = this.getResources();Bitmap bitmap= BitmapFactory.decodeResource(resources , R.drawable.logo);
(if you are referencing drawable to construct bitmap)
Then Encode it
ByteArrayOutputStream stream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream); byte[] image = stream.toByteArray(); String encodedImage = Base64.encode(image, Base64.DEFAULT);
For Decoding Logic will be exactly reverse of encoding
byte[] decodedString = Base64.decode(encodedImage, Base64.DEFAULT);Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
To encode the bimap to image:
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); bitmap.compress(Bitmap.CompressFormat.PNG, 80, byteArrayOutputStream); byte[] imageBytes = byteArrayOutputStream.toByteArray(); String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT); Log.d("bytearray", String.valueOf(byteArrayOutputStream.toByteArray())); Log.d("encodedimage",encodedImage);