Android

Android Java দিয়ে Image কে Base64 String এ Convert করে PHP API এর মাধ্যমে Database এ Save করার সম্পূর্ণ গাইড

👁 22 ⏱ 3 min read 📅 25 Jun 2026

Contents

আজকের এই টিউটোরিয়ালে আমরা শিখব কীভাবে Android (Java) অ্যাপ থেকে একটি Image কে Base64 String এ Convert করতে হয় এবং তারপর PHP API ব্যবহার করে সেই String Server-এ পাঠিয়ে Database-এ Save করতে হয়। এই পদ্ধতিটি সাধারণত ব্যবহার করা হয়:

Step 1: Base64 কী?

Base64 হলো এমন একটি Encoding System যা Binary Data (যেমন Image) কে Text/String এ রূপান্তর করে। উদাহরণ:

Image File
↓
Base64 Encode
↓
String
↓
Send through API
যেহেতু Volley String Request এর মাধ্যমে String পাঠানো সহজ, তাই অনেক সময় Image কে Base64 String এ Convert করা হয়।

Step 2: Android Permission


< uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
Android 12 বা তার নিচের জন্য 
< uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
AndroidManifest Internet Permisson

< uses-permission android:name="android.permission.INTERNET" >

Step 3: Layout তৈরি

activity_main.xml

< ImageView
    android:id="@+id/imageView"
    android:layout_width="200dp"
    android:layout_height="200dp"
/>
< Button
    android:id="@+id/btnUpload"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Upload"
/>

Step 4: Image কে Bitmap এ Convert করা

ধরা যাক ImageView তে ইতিমধ্যে একটি ছবি আছে।

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

Bitmap bitmap =((BitmapDrawable) 
   imageView.getDrawable()).getBitmap();
ব্যাখ্যা ImageView এর ভিতরের ছবি বের করে। getBitmap() Drawable কে Bitmap এ রূপান্তর করে।

Step 5: Bitmap কে Base64 String এ Convert করা


private String imageToBase64(Bitmap bitmap){

    ByteArrayOutputStream baos =
            new ByteArrayOutputStream();

    bitmap.compress(
            Bitmap.CompressFormat.JPEG,
            80,
            baos
    );

    byte[] imageBytes = baos.toByteArray();

    return Base64.encodeToString(
            imageBytes,
            Base64.DEFAULT
    );
}
Line by Line Explanation
1.

ByteArrayOutputStream baos = new ByteArrayOutputStream();
Image Data Temporary Memory তে রাখবে।
2.

bitmap.compress(
        Bitmap.CompressFormat.JPEG,
        80,
        baos
);
Bitmap কে JPEG Format এ Convert করবে। এখানে, 80 মানে Image Quality 80%
3.

byte[] imageBytes = baos.toByteArray();
Image কে Byte Array তে Convert করছে।
4.

Base64.encodeToString(
        imageBytes,
        Base64.DEFAULT
);
Byte Array কে Base64 String এ Convert করছে।

Step 6: Base64 String পাওয়া


String imageString =
        imageToBase64(bitmap);

Log.d("IMAGE", imageString);

Output:
/9j/4AAQSkZJRgABAQAAAQABAAD...
এটি সম্পূর্ণ Image এর String Version।

Step 7: PHP API তৈরি

server/upload.php
<?php
$image = $_POST['image'];

echo "Received";
?>
প্রথমে শুধু Data Receive হচ্ছে কিনা পরীক্ষা করুন।

Step 8: Android থেকে PHP তে Data পাঠানো

Volley String Request ব্যবহার করে: Volley ব্যবহার করতে চাইলে প্রথমে Dependency যোগ করুন: build.gradle (Module: app)
implementation 'com.android.volley:volley:1.2.1'
Base64 String PHP API তে পাঠানোর জন্য Volley StringRequest

String url = "https://yourwebsite.com/upload.php";

StringRequest stringRequest = new StringRequest(
        Request.Method.POST,
        url,
        response -> {

            Log.d("SERVER_RESPONSE", response);

        },
        error -> {

            Log.e("VOLLEY_ERROR",
                    error.toString());

        }) {

    @Override
    protected Map getParams()
            throws AuthFailureError {

        Map params =
                new HashMap<>();

        params.put("image", imageString);

        return params;
    }
};

RequestQueue requestQueue =
        Volley.newRequestQueue(this);

requestQueue.add(stringRequest);
Explanation
URL
String url =
"https://yourwebsite.com/upload.php";
এখানে PHP API এর URL দেওয়া হয়েছে। StringRequest
StringRequest stringRequest
Volley এর মাধ্যমে POST Request তৈরি করা হচ্ছে। Request.Method.POST
Request.Method.POST
Data POST Method দিয়ে Server এ পাঠানো হবে। Success Response

response -> {
    Log.d(
      "SERVER_RESPONSE",
      response
    );
}
PHP থেকে যা echo করা হবে তা এখানে পাওয়া যাবে। উদাহরণ:
<?php
echo "Upload Success";
?>
Output: ->Upload Success Error Response

error -> {
    Log.e(
      "VOLLEY_ERROR",
      error.toString()
    );
}
Server Error বা Network Error হলে এখানে ধরা হবে। getParams()

@Override
protected Map
getParams()
POST Data তৈরির জন্য ব্যবহার করা হয়। Data Send

params.put(
    "image",
    imageString
);
PHP এর
<?php
$_POST['image']
?>
এখানে এই Data পাওয়া যাবে।

Complete Upload Button Example


btnUpload.setOnClickListener(v -> {

    Bitmap bitmap =
            ((BitmapDrawable)
            imageView.getDrawable())
            .getBitmap();

    String imageString =
            imageToBase64(bitmap);

    uploadImage(imageString);

});
upload Image Class

private void uploadImage(
        String imageString) {

    String url =
            "https://yourwebsite.com/upload.php";

    StringRequest request =
            new StringRequest(
                    Request.Method.POST,
                    url,
                    response -> {

                        Toast.makeText(
                                this,
                                response,
                                Toast.LENGTH_SHORT
                        ).show();

                    },
                    error -> {

                        Toast.makeText(
                                this,
                                error.toString(),
                                Toast.LENGTH_SHORT
                        ).show();

                    }) {

                @Override
                protected Map
                getParams() {

                    Map
                            params =
                            new HashMap<>();

                    params.put(
                            "image",
                            imageString
                    );

                    return params;
                }
            };

    Volley.newRequestQueue(this)
            .add(request);
}
এভাবেই Base64 String কে Volley এর StringRequest ব্যবহার করে PHP API তে পাঠানো যায়, এবং PHP-তে $_POST['image'] দিয়ে গ্রহণ করা যায়।

Step 9: PHP তে Base64 Image Save করা

upload.php
<?php

?>
Explanation
  • Base64 Decode
  • <?php
    base64_decode($image);
    ?>
    String কে আবার Original Image এ রূপান্তর করে।
  • Unique Name
  • <?php
    time().'.jpg'
    ?>
    যেমন: -> 1751345678.jpg
  • Save File
  • <?php
    file_put_contents(
        "uploads/".$fileName,
        $imageData
    );
    ?>
    uploads Folder এ Image Save হবে।

    Step 10: Database তৈরি

    
    CREATE TABLE images(
    id INT AUTO_INCREMENT PRIMARY KEY,
    image_name VARCHAR(255)
    );
    

    Step 11: Database Connection

    db.php
    <?php
    $conn =
    new mysqli(
    "localhost",
    "root",
    "",
    "my_database"
    );
    
    if($conn->connect_error){
    
    die("Connection Failed");
    
    }
    ?>

    Step 12: Image Name Database এ Save করা

    upload.php
    <?php
    include "../db.php";
    
    $image =
    $_POST['image'];
    
    $imageData =
    base64_decode($image);
    
    $fileName =
    time().".jpg";
    
    file_put_contents(
    "uploads/".$fileName,
    $imageData
    );
    
    $sql =
    "INSERT INTO images(image_name)
    VALUES('$fileName')";
    
    $conn->query($sql);
    
    echo "Upload Success";
    
    ?>

    Step 13: Database এ কী Save হবে?

    Table
    id image_name
    1 1751345678.jpg
    Database এ সাধারণত Image Save করা হয় না। Save করা হয়:
    
    image_name
    image_path
    image_url
    
    কারণ এতে Database দ্রুত কাজ করে।

    Complete Flow Diagram

    
    User Select Image
              ↓
    Bitmap
              ↓
    Base64 Encode
              ↓
    String
              ↓
    POST Request
              ↓
    PHP API
              ↓
    Base64 Decode
              ↓
    Image File
              ↓
    uploads Folder
              ↓
    Save Filename in MySQL
    

    Best Practice

    বাস্তব Project এ সাধারণত Base64 ব্যবহার না করে Multipart/Form-Data ব্যবহার করা হয়, কারণ: তবে Learning, Practice এবং Small Project এর জন্য Base64 Method বোঝার জন্য খুবই ভালো। এই টিউটোরিয়ালে আমরা শিখলাম: ✅ Android ImageView থেকে Bitmap নেওয়া ✅ Bitmap কে Base64 String এ Convert করা ✅ PHP API তে POST Request পাঠানো ✅ PHP দিয়ে Base64 Decode করা ✅ Server Folder এ Image Save করা ✅ MySQL Database এ Image Name Store করা এই সম্পূর্ণ Flow ব্যবহার করে আপনি Android Java + PHP দিয়ে Profile Picture Upload, Product Image Upload, Gallery Upload ইত্যাদি Feature তৈরি করতে পারবেন।
    Facebook Twitter