Glide: এটি কী, ইমেজ লাইব্রেরি এবং Android এ ব্যবহার

লেখক: IT Sectr প্রকাশিত: 2026-05-05 পড়ার সময়: 8 মিনিট

Glide হল Android এ ইমেজ লোড করার জন্য একটি লাইব্রেরি, যা Google Bumptech প্রজেক্টের মাধ্যমে সমর্থিত। লাইব্রেরিটি স্বয়ংক্রিয় মেমোরি ব্যবস্থাপনার সাথে ইমেজ, GIF অ্যানিমেশন এবং ভিডিও ফ্রেমের কার্যকর লোডিং প্রদান করে। Glide GitHub রিপোজিটরি অনুসারে, প্রজেক্টটি 200,000 এরও বেশি অ্যাপ্লিকেশন দ্বারা ব্যবহৃত হয়। Google Android এ গ্রাফিক্স লোড করার জন্য Glide কে পছন্দের লাইব্রেরি হিসাবে সুপারিশ করে।

মূল বিষয়

  • Glide — GIF এবং ভিডিও ফ্রেম সমর্থন সহ Google এর ইমেজ লোডিং লাইব্রেরি
  • ক্যাশিং তিন স্তরে: মেমোরি, ডিস্ক এবং সক্রিয় রিসোর্স সর্বোচ্চ গতির জন্য
  • জীবনচক্র — Glide Activity বিরতি দেওয়া হলে স্বয়ংক্রিয়ভাবে অনুরোধ থামায়
  • GIF এবং অ্যানিমেটেড WebP অতিরিক্ত প্লাগইন ছাড়াই সমর্থিত
  • Thumbnail প্রথমে ছোট সংস্করণ তারপর পূর্ণ সংস্করণ দেখাতে দেয়

Glide কী?

Glide হল Android অ্যাপ্লিকেশনে ইমেজ, অ্যানিমেটেড GIF এবং ভিডিও ফ্রেমের দ্রুত এবং কার্যকর লোডিংয়ের জন্য একটি লাইব্রেরি। প্রজেক্টটি Google এর অধীনে Bumptech দ্বারা উন্নত এবং Google এর অফিসিয়াল অ্যাপ্লিকেশনগুলিতে ব্যাপকভাবে ব্যবহৃত হয়।

Glide এর অভ্যন্তরীণ আর্কিটেকচার একটি কম্পোনেন্ট-ভিত্তিক পদ্ধতির উপর নির্মিত: Engine অনুরোধ নির্বাহ পরিচালনা করে, DecodeJob ডিকোডিংয়ের জন্য দায়ী, এবং ResourceDecoder কাঁচা ডেটাকে Bitmap বা Drawable এ রূপান্তর করে। প্রতিটি ধাপ মডিউল এবং রেজিস্ট্রির মাধ্যমে কাস্টমাইজ করা যেতে পারে, যা Glide কে অ-মানক ইমেজ ফর্ম্যাটের জন্য অত্যন্ত নমনীয় লাইব্রেরি করে তোলে।

অনেক প্রতিযোগীর বিপরীতে, Glide শুরু থেকে Android এর বৈশিষ্ট্যগুলি মাথায় রেখে ডিজাইন করা হয়েছিল: Activity এবং Fragment জীবনচক্র, স্ক্রিন রোটেশন, কনফিগারেশন পরিবর্তন। লাইব্রেরি কম্পোনেন্টের অবস্থার উপর ভিত্তি করে স্বয়ংক্রিয়ভাবে লোডিং থামায় এবং পুনরায় শুরু করে।

Android Developers অনুসারে, Google এর অফিসিয়াল ডকুমেন্টেশনে ইমেজ লোডিংয়ের জন্য Glide প্রস্তাবিত লাইব্রেরি। এটি Google Play, Google Maps এবং কোম্পানির অন্যান্য পণ্যগুলিতে ব্যবহৃত হয়, যা এর নির্ভরযোগ্যতা এবং কর্মক্ষমতা নিশ্চিত করে।

Glide এবং বিকল্পগুলির মধ্যে মূল পার্থক্য হল ImageView আকারে ফিট করার জন্য স্বয়ংক্রিয় ইমেজ স্কেলিং। যেখানে Picasso পূর্ণ রেজোলিউশনে ইমেজ লোড করে এবং তারপর স্কেল করে, Glide ফাইলটি সরাসরি প্রয়োজনীয় আকারে ডিকোড করে। এটি পিক মেমোরি খরচ কমায় এবং বিভিন্ন সেল আকারের তালিকায় প্রদর্শন দ্রুত করে।

Glide এর প্রধান বৈশিষ্ট্য

Glide ইমেজ নিয়ে কাজ করার জন্য বিস্তৃত ফাংশন প্রদান করে, যা সহজ এবং জটিল উভয় ধরনের কন্টেন্ট লোডিং পরিস্থিতি কভার করে।

GIF এবং অ্যানিমেটেড WebP সমর্থন

GIF এবং অ্যানিমেটেড WebP Glide দ্বারা স্থির ইমেজের মতোই সহজে লোড এবং প্রদর্শিত হয়। লাইব্রেরি স্বয়ংক্রিয়ভাবে MIME টাইপ দ্বারা ফর্ম্যাট সনাক্ত করে এবং অ্যানিমেশন ডিকোড করে, ব্যাকগ্রাউন্ড থ্রেডে ফ্রেম প্রদর্শন করে। প্লেব্যাক নিয়ন্ত্রণের জন্য asGif এবং asBitmap পদ্ধতি উপলব্ধ।

জীবনচক্র একীকরণ

Glide স্বয়ংক্রিয়ভাবে Activity, Fragment এবং View এর জীবনচক্রের সাথে সংযুক্ত হয়। যখন Activity বিরতি দেওয়া হয়, লোডিং স্থগিত হয়; যখন ধ্বংস হয়, বাতিল হয়। এটি মেমোরি লিক এবং ইতিমধ্যে বন্ধ স্ক্রিনের জন্য ইমেজ লোডিং প্রতিরোধ করে। একীকরণ LifecycleOwner সমর্থনের মাধ্যমে কাজ করে।

ভিডিও ফ্রেম লোডিং

Glide URL বা স্থানীয় পাথ দ্বারা ভিডিও থেকে ফ্রেম নিষ্কাশন করতে পারে। ভিডিও URI এর জন্য load() এর সাথে asBitmap() পদ্ধতি ব্যবহার করা হয়। Glide স্বয়ংক্রিয়ভাবে একটি কী ফ্রেম বা নির্দিষ্ট টাইমস্ট্যাম্পে ফ্রেম নির্বাচন করে। এটি ভিডিও থাম্বনেইল প্রদর্শনের জন্য দরকারী।

GlideApp জেনারেশন এবং কনফিগারেশন

GlideApp হল একটি জেনারেটেড ক্লাস যা AppGlideModule কনফিগারেশনের উপর ভিত্তি করে একটি বর্ধিত API প্রদান করে। এটি স্ট্যান্ডার্ড Glide.with এ অনুপলব্ধ পদ্ধতি ব্যবহারের অনুমতি দেয়: কাস্টম ডিফল্ট অপশন সহ লোডিং, লাইব্রেরির সাথে একীকরণ এবং প্রিসেট ট্রান্সফর্মেশন। জেনারেশনের জন্য AppGlideModule এক্সটেন্ড করা ক্লাসে @GlideModule অ্যানোটেশন প্রয়োজন।

Glide কীভাবে কাজ করে?

Glide ইঞ্জিন, ডিকোডার, ট্রান্সফর্মেশন এবং ক্যাশ সহ বহু-স্তরীয় আর্কিটেকচার ব্যবহার করে। প্রতিটি অনুরোধ হ্যান্ডলারের একটি চেইনের মাধ্যমে যায় যা একটি নির্দিষ্ট ImageView এর জন্য লোডিং অপ্টিমাইজ করে।

আর্কিটেকচার এবং পাইপলাইন

যখন into(view) কল করা হয়, Glide ক্যাশ চেক করে: সক্রিয় রিসোর্স, মেমোরি ক্যাশ, ডিস্ক ক্যাশ এবং তারপরই নেটওয়ার্ক। ইমেজ স্ক্রিন ডেনসিটি এবং scaleType বিবেচনা করে স্বয়ংক্রিয়ভাবে টার্গেট ImageView আকারে স্কেল হয়। এটি মেমোরি ব্যবহার কমায় — Glide এর একটি প্রধান সুবিধা।

java
Glide.with(context)
    .load("https://example.com/image.jpg")
    .placeholder(R.drawable.loading)
    .error(R.drawable.error)
    .override(400, 300)
    .centerCrop()
    .into(imageView)

Glide ইনস্টল এবং কনফিগারেশন

ইনস্টলেশন Glide এর Gradle এর মাধ্যমে করা হয়। API জেনারেশনের জন্য লাইব্রেরির AppGlideModule এর মাধ্যমে কনফিগারেশন প্রয়োজন। ন্যূনতম Android API সংস্করণ হল 21।

নির্ভরতা যোগ করা

build.gradle এ, GlideApp API জেনারেশনের জন্য kapt অ্যানোটেশন প্রসেসরের সাথে Glide যোগ করুন। Kotlin এর জন্য, annotationProcessor এর পরিবর্তে kapt ব্যবহার করুন। Glide সংস্করণ 4.16+ Android Gradle Plugin 8.x এর সাথে স্থিতিশীলভাবে কাজ করে।

groovy
dependencies {
    implementation "com.github.bumptech.glide:glide:4.16.0"
    annotationProcessor "com.github.bumptech.glide:compiler:4.16.0"
}

// Kotlin এর জন্য kapt ব্যবহার করুন
// kapt "com.github.bumptech.glide:compiler:4.16.0"

AppGlideModule তৈরি করা

AppGlideModule Glide কনফিগার করার জন্য একটি বাধ্যতামূলক কম্পোনেন্ট। এটি ক্যাশ আকার, কাস্টম HttpStack সেট করা এবং কাস্টম ডিকোডার নিবন্ধন করার অনুমতি দেয়। অ্যাপ্লিকেশন স্টার্টআপে মডিউলটি Glide দ্বারা স্ক্যান করা হয়। @GlideModule অ্যানোটেশন এটি স্বয়ংক্রিয়ভাবে নিবন্ধন করে।

java
@GlideModule
public class MyGlideModule extends AppGlideModule {
    @Override
    public void applyOptions(Context context, GlideBuilder builder) {
        int diskCacheSize = 250 * 1024 * 1024;
        builder.setDiskCache(
            new DiskLruCacheFactory(cacheDir.getPath(), diskCacheSize)
        );
    }
}

Glide ব্যবহারের উদাহরণ

নিচের উদাহরণগুলি সাধারণ পরিস্থিতি দেখায়: ইমেজ লোডিং, GIF নিয়ে কাজ করা এবং ভিডিও ফ্রেম নিষ্কাশন।

প্লেসহোল্ডার সহ ইমেজ লোড করা

Glide.with().load().into() এর মাধ্যমে মৌলিক লোডিং — নেটওয়ার্ক থেকে ইমেজ প্রদর্শনের জন্য ন্যূনতম কোড। Glide স্বয়ংক্রিয়ভাবে ImageView আকারে সামঞ্জস্য হয়। লোডিংয়ের সময় প্লেসহোল্ডার দেখানো হয় এবং ব্যর্থতায় error দেখানো হয়।

java
Glide.with(fragment)
    .load("https://example.com/photo.jpg")
    .placeholder(R.drawable.placeholder)
    .error(R.drawable.error)
    .skipMemoryCache(true)
    .diskCacheStrategy(DiskCacheStrategy.NONE)
    .into(imageView)

GIF ইমেজ লোড করা

GIF স্থির ইমেজের মতোই লোড করা হয় — Glide স্বয়ংক্রিয়ভাবে কন্টেন্ট টাইপ দ্বারা ফর্ম্যাট সনাক্ত করে। স্থির ইমেজ হিসাবে জোর করে লোড করার জন্য asBitmap() ব্যবহার করুন; GIF এর জন্য asGif() ব্যবহার করুন। Glide শুধুমাত্র দৃশ্যমান ফ্রেম কার্যকরভাবে ডিকোড করে।

java
Glide.with(context)
    .asGif()
    .load("https://example.com/animation.gif")
    .into(imageView)

// GIF এর প্রথম ফ্রেমটি স্থির চিত্র হিসাবে লোড করুন
Glide.with(context)
    .asBitmap()
    .load("https://example.com/animation.gif")
    .into(imageView)

ভিডিও ফ্রেম লোড করা

একটি ভিডিও ফ্রেম স্থানীয় বা রিমোট ভিডিও URI থেকে Glide দ্বারা নিষ্কাশিত হয়। ডিফল্টরূপে, Glide কী ফ্রেম লোড করে। একটি নির্দিষ্ট টাইমস্ট্যাম্প নির্দিষ্ট করতে frameMillis ব্যবহার করুন। এটি ভিডিও গ্যালারিতে প্রিভিউ প্রদর্শনের জন্য সুবিধাজনক।

java
String videoUrl = "https://example.com/video.mp4";

Glide.with(context)
    .asBitmap()
    .load(videoUrl)
    .override(200, 200)
    .into(imageView)

বড় তালিকার জন্য Glide অপ্টিমাইজেশন

বৃহৎ সংখ্যক ইমেজ সহ অ্যাপ্লিকেশন বিকাশের সময় RecyclerView এর জন্য Glide অপ্টিমাইজেশন একটি গুরুত্বপূর্ণ দক্ষতা। সঠিক কনফিগারেশন ল্যাগ এবং OOM ত্রুটি প্রতিরোধ করে।

Glide এর মূল বৈশিষ্ট্যগুলির মধ্যে একটি হল RecyclerViewPreloader এর মাধ্যমে RecyclerView একীকরণ। এই কম্পোনেন্ট স্ক্রোল গতি এবং দিক বিশ্লেষণ করে, কয়েকটি আইটেমের মধ্যে স্ক্রিনে প্রদর্শিত হবে এমন ইমেজ প্রিলোড করে। প্রিলোডার ব্যবহার করতে, আপনাকে PreloadSizeProvider ইন্টারফেস ইমপ্লিমেন্ট করতে হবে এবং এটি টার্গেট ImageView সহ কনস্ট্রাক্টরে পাস করতে হবে।

সঠিক ImageView মাত্রার সাথে override() পদ্ধতি ব্যবহার লোডিং উল্লেখযোগ্যভাবে দ্রুত করে। যখন Glide টার্গেটের সঠিক আকার জানে, এটি স্কেলিং ধাপ এড়িয়ে সরাসরি প্রয়োজনীয় রেজোলিউশনে ইমেজ ডিকোড করতে পারে। এটি ডিকোডিং সময় এবং পিক মেমোরি খরচ 30–40% কমায়।

বৈচিত্র্যময় কন্টেন্ট সহ ফিডের জন্য, প্রতিটি আইটেম প্রকারের জন্য আলাদা RequestOptions ব্যবহার করুন। উদাহরণস্বরূপ, বড় ব্যানার ইমেজের জন্য, আপনি override(1200, 600) এবং RGB_565 গুণমান সেট করতে পারেন, যখন অবতারগুলির জন্য — override(200, 200) এবং transform এর মাধ্যমে গোলাকৃতি। এই পদ্ধতি প্রতিটি কন্টেন্ট প্রকারের জন্য সম্পদ সর্বোত্তমভাবে ব্যবহার করে।

ত্রুটি ব্যবস্থাপনা

Glide ত্রুটি ইমেজ এবং কাস্টম RequestListener এর মাধ্যমে ত্রুটি ব্যবস্থাপনার জন্য নমনীয় বিকল্প প্রদান করে। RequestListener সফল লোডিং বা ব্যর্থতায় প্রতিক্রিয়া জানাতে দেয় — ত্রুটি লগ করা বা বিশ্লেষণ পাঠানো। আপনি একটি ফলব্যাকও কনফিগার করতে পারেন — একটি ইমেজ যা দেখানো হয় যখন load() URL এর পরিবর্তে null পায়।

ব্যবহারকারী সেগুলিতে স্ক্রোল করার আগে ইমেজ প্রিলোড করতে RecyclerViewPreloader ব্যবহার করুন। Glide একটি প্রিলোডারের মাধ্যমে RecyclerView একীকরণ সমর্থন করে যা স্ক্রোল গতি বিশ্লেষণ করে এবং আগাম ইমেজ লোড করে।

থাম্বনেইল গুণন প্রথমে ইমেজের একটি ছোট সংস্করণ দেখাতে দেয়, তারপর পূর্ণ সংস্করণ লোড করে। thumbnail(0.25f) কল করলে 25% আকারের একটি সংস্করণ লোড হয় যা সাথে সাথে প্রদর্শিত হয়, যখন পূর্ণ আকারের ইমেজ পরে লোড হয়। এটি তাত্ক্ষণিক লোডিংয়ের অনুভূতি তৈরি করে।

তালিকা অ্যাডাপ্টারের জন্য, সঠিক ImageView মাত্রার সাথে .override() ব্যবহার করুন যাতে Glide প্রতিবার ইমেজ স্কেল না করে। এটি CPU লোড এবং মেমোরি খরচ কমায়। ক্যাশ আকার পরীক্ষামূলকভাবে নির্বাচন করা হয়, কিন্তু ডিস্কের জন্য 250 MB এবং উপলব্ধ মেমোরির 20% একটি ভাল শুরুর পয়েন্ট।

প্রায়শই জিজ্ঞাসিত প্রশ্ন

Glide Picasso থেকে কীভাবে আলাদা?

Glide GIF, ভিডিও ফ্রেম এবং অ্যানিমেটেড WebP সমর্থন করে। এটি মেমোরি আরও দক্ষতার সাথে পরিচালনা করে এবং Google দ্বারা সুপারিশকৃত। Picasso আকারে ছোট এবং ব্যবহারে সহজ। জটিল প্রজেক্টের জন্য Glide বেছে নিন।

Glide কীভাবে জীবনচক্রের সাথে সংযুক্ত হয়?

Glide LifecycleOwner (Fragment, Activity) বা View গ্রহণ করে। লাইব্রেরি LifecycleObserver এর মাধ্যমে স্বয়ংক্রিয়ভাবে অবস্থা ট্র্যাক করে: বিরতিতে লোডিং থামায় এবং ধ্বংসে বাতিল করে, লিক প্রতিরোধ করে।

আমি কি Glide এ GIF এর শুধুমাত্র প্রথম ফ্রেম লোড করতে পারি?

হ্যাঁ, load() এর আগে asBitmap() ব্যবহার করুন। Glide GIF কে একটি স্থির ইমেজ হিসাবে লোড করবে এবং শুধুমাত্র প্রথম ফ্রেম দেখাবে। এটি তালিকার জন্য দরকারী যেখানে কর্মক্ষমতার কারণে GIF অ্যানিমেশন অবাঞ্ছিত।

Glide ক্যাশ কীভাবে কর্মক্ষমতা প্রভাবিত করে?

Glide ক্যাশ তিনটি স্তর নিয়ে গঠিত: সক্রিয় রিসোর্স (বর্তমানে ব্যবহারে), মেমোরি (LRU ক্যাশ) এবং ডিস্ক (LruCache)। ক্যাশ থেকে লোড করা ইমেজ তাত্ক্ষণিকভাবে প্রদর্শিত হয়। মেমোরি কম হলে ক্যাশ স্বয়ংক্রিয়ভাবে পরিষ্কার হয়।

Glide এর জন্য কাস্টম HTTP ক্লায়েন্ট কীভাবে কনফিগার করবেন?

একটি কাস্টম HTTP ক্লায়েন্ট AppGlideModule এ OkHttpUrlLoader এর মাধ্যমে নিবন্ধিত হয়। registerComponents ওভাররাইড করুন এবং আপনার OkHttpClient নিবন্ধন করুন। এটি ইন্টারসেপ্টর, সার্টিফিকেট এবং কাস্টম টাইমআউট যোগ করার অনুমতি দেয়।

সারাংশ

  • Glide — GIF এবং ভিডিও ফ্রেম সমর্থন সহ Google এর ইমেজ লোডিং লাইব্রেরি
  • তিন-স্তরের ক্যাশ বারবার লোড করা ইমেজে তাত্ক্ষণিক অ্যাক্সেস প্রদান করে
  • জীবনচক্র স্বয়ংক্রিয়ভাবে অনুরোধ থামায় এবং বাতিল করে
  • ভিডিও ফ্রেম asBitmap এর মাধ্যমে স্থানীয় এবং রিমোট ভিডিও থেকে নিষ্কাশিত হয়
  • থাম্বনেইল গুণন তালিকায় ইমেজ প্রদর্শন দ্রুত করে
  • Google এর সুপারিশ Glide কে Android অ্যাপ্লিকেশনের জন্য মান করে তোলে
  • RecyclerViewPreloader ব্যবহারকারী স্ক্রোল করার আগে ইমেজ প্রিলোড করে

আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব

IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।

প্রকল্প নিয়ে আলোচনা করুন

আরও পড়ুন