In this tutorial you will learn how to convert image to base64 string or base64 string to image in android.
Base64 is an encoding schema that represents binary data in an ASCII string. It becomes really helpful in case you want to upload image to server or save the image in database.
How It Works?
Image to Base64 String
- First convert the image into bitmap.
- Then compress bitmap to ByteArrayOutputStream.
- Convert ByteArrayOutputStream to byte array.
- Finally convert byte array to base64 string.
Base64 String to Image
- Convert the base64 string to byte array.
- Now convert byte array to bitmap.
Android Convert Image to Base64 String or Base64 String to Image
Create new android studio project with package name com.base64example.
Add an image in res/drawable folder. This is the image that we will convert. See below screenshot I have added an image with name logo.png.
Now add following code in respectively files.
acitivity_main.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.base64example.MainActivity"> <ImageView android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/image"/> </RelativeLayout>
MainActivity.java
package com.base64example; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Base64; import android.widget.ImageView; import java.io.ByteArrayOutputStream; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ImageView image =(ImageView)findViewById(R.id.image); //encode image to base64 string ByteArrayOutputStream baos = new ByteArrayOutputStream(); Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.logo); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos); byte[] imageBytes = baos.toByteArray(); String imageString = Base64.encodeToString(imageBytes, Base64.DEFAULT); //decode base64 string to image imageBytes = Base64.decode(imageString, Base64.DEFAULT); Bitmap decodedImage = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length); image.setImageBitmap(decodedImage); } }
Run the project.
I am converting the image to base64 string and then converting back to bitmap and finally showing it in ImageView.
Screenshot
The post Android Convert Image to Base64 String or Base64 String to Image appeared first on The Crazy Programmer.