Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Encode and decode bitmap object in base64 string in Android

I want to encode and decode Bitmap object in string base64. I use the Android API10,

I have tried, with no success, to use a method in this form to encode a Bitmap.

public static String encodeTobase64(Bitmap image) {     Bitmap immagex=image;     ByteArrayOutputStream baos = new ByteArrayOutputStream();       immagex.compress(Bitmap.CompressFormat.JPEG, 100, baos);     byte[] b = baos.toByteArray();     String imageEncoded = Base64.encodeToString(b,Base64.DEFAULT);      Log.e("LOOK", imageEncoded);     return imageEncoded; } 
like image 972
AndreaF Avatar asked Mar 19 '12 10:03

AndreaF


2 Answers

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); 
like image 97
Roman Truba Avatar answered Sep 21 '22 16:09

Roman Truba


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);  
like image 30
Vipul Avatar answered Sep 19 '22 16:09

Vipul