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

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

এই উদাহরণে দেখানো হয়েছে কিভাবে ইন্টারনাল স্টোরেজ থেকে একটি ইমেজ ফাইল পড়ে ImageView-এ দেখানো যায়।

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

স্টেপ ২: 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/read"
        android:text = "read"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content" />

    <ImageView
        android:id = "@+id/imageView"
        android:layout_width = "300dp"
        android:layout_height = "300dp" />
</LinearLayout>

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


package com.example.andy.myapplication;

import android.content.Context;
import android.content.ContextWrapper;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import java.io.File;

public class MainActivity extends AppCompatActivity {
    Button read;
    ImageView imageView;

    @Override
    protected void onCreate(Bundle readdInstanceState) {
        super.onCreate(readdInstanceState);
        setContentView(R.layout.activity_main);
        
        imageView = findViewById(R.id.imageView);
        read = findViewById(R.id.read);
        
        read.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ContextWrapper cw = new ContextWrapper(getApplicationContext());
                File directory = cw.getDir("imageDir", Context.MODE_PRIVATE);
                File file = new File(directory, "mario" + ".png");
                
                // ফাইল পথ থেকে Drawable তৈরি করে ImageView-এ সেট
                imageView.setImageDrawable(Drawable.createFromPath(file.toString()));
            }
        });
    }
}

রান করা

অ্যান্ড্রয়েড ডিভাইসে রান করুন। "read" বাটনে ক্লিক করলে ইন্টারনাল স্টোরেজের imageDir/mario.png ফাইলটি ImageView-এ দেখাবে।

ব্যাখ্যা

  • ContextWrapper.getDir("imageDir", Context.MODE_PRIVATE) - লেখার সময় যেটি ব্যবহার করা হয়েছিল, সেটিই ব্যবহার করতে হয় পড়ার সময়ও।
  • Drawable.createFromPath(file.toString()) - ফাইল পথ থেকে ড্রবল তৈরি করে।
  • ইন্টারনাল স্টোরেজ ফাইল শুধু এই অ্যাপই অ্যাক্সেস করতে পারে, পারমিশন লাগে না।

বিকল্প: BitmapFactory ব্যবহার করে (বড় ইমেজের জন্য ভালো)


Bitmap bitmap = BitmapFactory.decodeFile(file.getAbsolutePath());
imageView.setImageBitmap(bitmap);

BitmapFactory.Options ব্যবহার করে ইনস্যাম্পলিং (downsampling) করা যাবে বড় ইমেজের জন্য OOM এড়াতে।

দ্রষ্টব্য

  • ফাইলটি অবশ্যই পূর্বে সেভ করা থাকতে হবে (পূর্বের "write" উদাহরণ ব্যবহার করে)।
  • যদি ফাইল না থাকে, createFromPath null রিটার্ন করবে, ImageView খালি থাকবে।
  • এরর হ্যান্ডলিং যোগ করা ভালো: if (file.exists()) চেক করে।
  1. Android-এ SD কার্ডকে ইন্টারনাল মেমরি হিসেবে মাউন্ট করার পদ্ধতি

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

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

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