activity_main.xml


<?xml version="1.0" encoding="utf-8"?>

<LinearLayout 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"

    android:gravity="center"

    android:orientation="vertical"

    tools:context=".MainActivity">


    <ImageView

        android:id="@+id/imageView"

        android:layout_width="match_parent"

        android:layout_height="200dp"

        android:adjustViewBounds="true"

        android:src="@drawable/your_image" />


    <androidx.appcompat.widget.AppCompatButton

        android:id="@+id/bitmapToBase64Btn"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_marginTop="10dp"

        android:text="Bitmap to Base64" />


    <androidx.appcompat.widget.AppCompatButton

        android:id="@+id/base64ToBitmapBtn"

        android:layout_width="match_parent"

        android:layout_height="wrap_content"

        android:layout_marginTop="10dp"

        android:text="Base64 to Bitmap" />

</LinearLayout>



MainActivity.java

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.drawable.BitmapDrawable;

import android.os.Bundle;

import android.util.Base64;

import android.view.View;

import android.widget.ImageView;


import androidx.appcompat.app.AppCompatActivity;

import androidx.appcompat.widget.AppCompatButton;


import java.io.ByteArrayOutputStream;


public class MainActivity extends AppCompatActivity {


    private String base64String = "";


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);


        final ImageView imageView = findViewById(R.id.imageView);

        final AppCompatButton base64ToBitmap = findViewById(R.id.base64ToBitmapBtn);

        final AppCompatButton bitmapToBase64 = findViewById(R.id.bitmapToBase64Btn);


        bitmapToBase64.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {


                // getting Bitmap from ImageView

                final Bitmap imageBitmap = ((BitmapDrawable) imageView.getDrawable()).getBitmap();


                // converting to Base64

                base64String = bitmapToBase64(imageBitmap);


                // remove image from ImageView

                imageView.setImageBitmap(null);

            }

        });


        base64ToBitmap.setOnClickListener(new View.OnClickListener() {

            @Override

            public void onClick(View view) {


                // getting bitmap from base64 string

                Bitmap bitmap = base64ToBitmap(base64String);


                // setting bitmap to ImageView

                imageView.setImageBitmap(bitmap);

            }

        });

    }


    private String bitmapToBase64(Bitmap bitmap) {


        // initialize byte stream to store bytes from bitmap

        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();


        // compress Bitmap and getting bytes

        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteArrayOutputStream);


        // getting byte array from output stream

        byte[] bytes = byteArrayOutputStream.toByteArray();


        // get base64 encoded string

        final String base64String = Base64.encodeToString(bytes, Base64.DEFAULT);


        return base64String;

    }


    private Bitmap base64ToBitmap(String base64String) {


        // decode base64 string

        byte[] bytes = Base64.decode(base64String, Base64.DEFAULT);


        // Initialize bitmap

        Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);


        return bitmap;

    }

}