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

Kotlin-এ Glide ব্যবহার করে URL থেকে Bitmap-এ ইমেজ ডাউনলোড করা

ওভারভিউ

এই টিউটোরিয়ালে দেখানো হয়েছে কিভাবে জনপ্রিয় ইমেজ লোডিং লাইব্রেরি Glide ব্যবহার করে URL থেকে ইমেজ ডাউনলোড করে Bitmap অবজেক্ট হিসেবে পাওয়া যায়।

প্রয়োজনীয় ধাপসমূহ

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

ধাপ ২: build.gradle.kts (Module) - Dependency যোগ করুন

dependencies {
    // Glide core
    implementation("com.github.bumptech.glide:glide:4.16.0")
    // Annotation processor (Kotlin-এ kapt)
    kapt("com.github.bumptech.glide:compiler:4.16.0")
    
    // অপশনাল: OkHttp ইন্টিগ্রেশন (नेটওয়ার্কিং کے لیے بہتر)
    implementation("com.github.bumptech.glide:okhttp3-integration:4.16.0")
}

build.gradle.kts (Project) - Repositories:

repositories {
    google()
    mavenCentral()
    maven { url = uri("https://jitpack.io") } // কিছু সময় জিটপ্যাক থেকে লাগে
}

ধাপ ৩: activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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">
    
    <ImageView
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop"
        android:contentDescription="Downloaded image" />
</RelativeLayout>

ধাপ ৪: MainActivity.kt

import android.graphics.Bitmap
import android.graphics.drawable.Drawable
import android.os.Bundle
import android.widget.ImageView
import androidx.annotation.Nullable
import androidx.appcompat.app.AppCompatActivity
import com.bumptech.glide.Glide
import com.bumptech.glide.request.target.CustomTarget
import com.bumptech.glide.request.transition.Transition

class MainActivity : AppCompatActivity() {
    private lateinit var imageView: ImageView
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        title = "Glide Bitmap Demo"
        
        imageView = findViewById(R.id.imageView)
        
        // Glide দিয়ে Bitmap হিসেবে লোড
        Glide.with(this)
            .asBitmap() // Bitmap হিসেবে চাই
            .load("https://images.unsplash.com/photo-1535332371349-a5d229f49cb5?w=800")
            .placeholder(R.drawable.placeholder) // অপশনাল
            .error(R.drawable.error_image) // অপশনাল
            .into(object : CustomTarget() {
                override fun onResourceReady(
                    resource: Bitmap, 
                    @Nullable transition: Transition?
                ) {
                    // Bitmap পাওয়া গেলে ImageView-এ সেট
                    imageView.setImageBitmap(resource)
                }
                
                override fun onLoadCleared(@Nullable placeholder: Drawable?) {
                    // ক্লিয়ার হলে (যদি placeholder থাকে)
                    imageView.setImageDrawable(placeholder)
                }
            })
    }
    
    override fun onDestroy() {
        super.onDestroy()
        // Glide রিকোয়েস্ট ক্যেন্সেল (মেমরি লিক এড়াতে)
        Glide.with(this).clear(imageView)
    }
}

ধাপ ৫: AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.glidedemo">
    
    <uses-permission android:name="android.permission.INTERNET" />
    
    <application ...>
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

Glide-এর অন্যান্য জনপ্রিয় ব্যবহার

সহজে ImageView-এ লোড (Bitmap ছাড়া):

Glide.with(this)
    .load("https://example.com/image.jpg")
    .placeholder(R.drawable.placeholder)
    .error(R.drawable.error)
    .into(imageView)

রিসাইজ এবং ট্রান্সফরমেশন:

Glide.with(this)
    .load(url)
    .override(800, 600) // রিসাইজ
    .centerCrop() // বা .fitCenter(), .circleCrop()
    .apply(RequestOptions().diskCacheStrategy(DiskCacheStrategy.ALL))
    .into(imageView)

কোরউটিনস সাপোর্ট (Glide 4.13+):

// kotlinx.coroutines দিয়ে
val bitmap = Glide.with(this)
    .asBitmap()
    .load(url)
    .submit() // Deferred রিটার্ন করে
    .await() // Suspend function

// বা kotlinx.coroutines.play.services ব্যবহার করে
val bitmap = Glide.with(this)
    .asBitmap()
    .load(url)
    .await() // Extension function
            
  1. অ্যান্ড্রয়েডে URL থেকে ইমেজ ডাউনলোড করার পদ্ধতি

  2. অ্যান্ড্রয়েডে ইমেজকে Base64 স্ট্রিং-এ রূপান্তর করা

  3. অ্যান্ড্রয়েডে Base64 স্ট্রিংকে Bitmap ইমেজে রূপান্তর করা

  4. Android-এ Glide লাইব্রেরি ব্যবহার করে ইমেজ বিটম্যাপ হিসেবে ডাউনলোড করা