কম্পিউটার টিউটোরিয়াল

অ্যান্ড্রয়েডে ইন্টারনাল স্টোরেজে ইমেজ ফাইল লেখা

এই উদাহরণে দেখানো হয়েছে কিভাবে অ্যান্ড্রয়েডে ইন্টারনাল স্টোরেজে একটি ইমেজ ফাইল লিখা (save) করা যায়।

স্টেপ ১: নতুন প্রজেক্ট তৈরি

Android Studio-তে File → New Project এ যান এবং প্রজেক্ট তৈরি করুন।

স্টেপ ২: res/layout/activity_main.xml


<?xml version = "1.0" encoding = "utf-8"?>
<LinearLayout xmlns:android = "https://schemas.android.com/apk/res/android"
    xmlns:tools = "https://schemas.android.com/tools"
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    tools:context = ".MainActivity"
    android:orientation = "vertical">

    <Button
        android:id = "@+id/save"
        android:text = "save"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content" />
</LinearLayout>

এখানে একটি বাটন আছে। ক্লিক করলে ইমেজ ইন্টারনাল স্টোরেজে সেভ হবে।

স্টেপ ৩: src/MainActivity.java


package com.example.andy.myapplication;

import android.content.Context;
import android.content.ContextWrapper;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import java.io.File;
import java.io.FileOutputStream;

public class MainActivity extends AppCompatActivity {
    Button save;
    Bitmap bitmap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        // ড্রবল থেকে বিটম্যাপ বের করুন (R.drawable.mario অ্যাসেট থেকে)
        Drawable drawable = getResources().getDrawable(R.drawable.mario);
        bitmap = ((BitmapDrawable) drawable).getBitmap();
        
        save = findViewById(R.id.save);
        save.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // ContextWrapper দিয়ে প্রাইভেট ডিরেক্টরি পান
                ContextWrapper cw = new ContextWrapper(getApplicationContext());
                File directory = cw.getDir("imageDir", Context.MODE_PRIVATE);
                
                // ইউনিক ফাইল নাম
                File file = new File(directory, "UniqueFileName" + ".jpg");
                
                if (!file.exists()) {
                    Log.d("path", file.toString());
                    FileOutputStream fos = null;
                    try {
                        fos = new FileOutputStream(file);
                        // বিটম্যাপ কম্প্রেস করে JPG ফরম্যাটে লিখুন
                        bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
                        fos.flush();
                        fos.close();
                    } catch (java.io.IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
    }
}

রান করা

অ্যান্ড্রয়েড ডিভাইস কানেক্ট করে Run করুন। অ্যাপ খুললে "save" বাটন দেখাবে। ক্লিক করলে ইমেজ ইন্টারনাল স্টোরেজে /data/data/package_name/app_imageDir/UniqueFileName.jpg পথে সেভ হবে।

ব্যাখ্যা

  • ContextWrapper.getDir("imageDir", Context.MODE_PRIVATE) - অ্যাপের প্রাইভেট ডিরেক্টরি তৈরি/পাওয়া। অন্য অ্যাপ অ্যাক্সেস করতে পারে না।
  • Bitmap.CompressFormat.JPEG, 100 - JPEG ফরম্যাট, ১০০% কোয়ালিটি।
  • FileOutputStream - বাইট স্ট্রিমে ডেটা লিখতে।
  • fos.flush() এবং fos.close() - বাফার ফ্লাশ এবং রিসোর্স রিলিজ।

দ্রষ্টব্য

  • ইন্টারনাল স্টোরেজ ফাইল অ্যাপ আনইনস্টল করলে মুছে যায়।
  • বড় ফাইলের জন্য Bitmap.CompressFormat.PNG বা কম কোয়ালিটি (৮০-৯০) ব্যবহার করা ভালো।
  • API 29+ (Android 10+) এ Scoped Storage-এর কারণে এক্সটার্নাল স্টোরেজ ব্যবহার করা জটিল, ইন্টারনাল সহজ।
  1. Android-এ SD কার্ডকে ইন্টারনাল মেমরি হিসেবে মাউন্ট করার পদ্ধতি

  2. অ্যান্ড্রয়েড ফাইল এসডি কার্ডে ট্রান্সফার: সহজ ধাপে ধাপে গাইড

  3. অ্যান্ড্রয়েড ফোনের ইন্টারন্যাল স্টোরেজ ফ্রি আপ করার সহজ উপায়

  4. Android স্টোরেজ গাইড: বিবর্তন, প্রকার এবং সেরা অনুশীলন