Glide: یہ کیا ہے، تصویری لائبریری اور Android میں استعمال

مصنف: IT Sectr اشاعت: 2026-05-05 مطالعے کا وقت: 8 منٹ

Glide Android میں تصاویر لوڈ کرنے کے لیے ایک لائبریری ہے، جو Google کے Bumptech پروجیکٹ کے ذریعے تعاون یافتہ ہے۔ لائبریری خودکار میموری مینجمنٹ کے ساتھ تصاویر، GIF اینیمیشنز اور ویڈیو فریمز کی موثر لوڈنگ فراہم کرتی ہے۔ Glide GitHub ذخیرہ کے مطابق، یہ پروجیکٹ 200,000 سے زیادہ ایپلیکیشنز استعمال کرتی ہیں۔ Google Android میں گرافکس لوڈ کرنے کے لیے Glide کو ترجیحی لائبریری کے طور پر تجویز کرتا ہے۔

اہم نکات

  • Glide — GIF اور ویڈیو فریم سپورٹ کے ساتھ Google کی تصویری لوڈنگ لائبریری
  • کیشنگ تین سطحوں پر: میموری، ڈسک اور فعال وسائل زیادہ سے زیادہ رفتار کے لیے
  • زندگی کا دور — Activity رکنے پر Glide خود بخود درخواستیں روک دیتا ہے
  • GIF اور اینیمیٹڈ WebP بغیر اضافی پلگ ان کے سپورٹ شدہ ہیں
  • Thumbnail پہلے چھوٹا ورژن دکھانے کی اجازت دیتا ہے، پھر مکمل ورژن

Glide کیا ہے؟

Glide Android ایپلیکیشنز میں تصاویر، اینیمیٹڈ GIF اور ویڈیو فریمز کی تیز اور موثر لوڈنگ کے لیے ایک لائبریری ہے۔ یہ پروجیکٹ Google کی سرپرستی میں Bumptech کے ذریعے تیار کیا گیا ہے اور Google کی سرکاری ایپلیکیشنز میں بڑے پیمانے پر استعمال ہوتا ہے۔

Glide کا اندرونی ڈھانچہ اجزاء پر مبنی نقطہ نظر پر بنایا گیا ہے: Engine درخواستوں پر عملدرآمد کا انتظام کرتا ہے، DecodeJob ڈی کوڈنگ کا ذمہ دار ہے، اور ResourceDecoder خام ڈیٹا کو Bitmap یا Drawable میں تبدیل کرتا ہے۔ ہر مرحلہ ماڈیولز اور رجسٹریوں کے ذریعے حسب ضرورت بنایا جا سکتا ہے، جو Glide کو غیر معیاری تصویری فارمیٹس کے لیے انتہائی لچکدار لائبریری بناتا ہے۔

بہت سے حریفوں کے برعکس، Glide شروع سے ہی Android کی خصوصیات کو مدنظر رکھتے ہوئے ڈیزائن کیا گیا تھا: Activity اور Fragment کی زندگی کے دور، اسکرین کی گردش، ترتیب میں تبدیلی۔ لائبریری جزو کی حالت کے مطابق خود بخود لوڈنگ روکتی اور دوبارہ شروع کرتی ہے۔

Android Developers کے مطابق، Glide Google کی سرکاری دستاویزات میں تصویری لوڈنگ کے لیے تجویز کردہ لائبریری ہے۔ یہ 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 ke liye kapt ka istemal karein
// 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 سائز میں ایڈجسٹ ہو جاتا ہے۔ لوڈنگ کے دوران placeholder دکھایا جاتا ہے اور ناکامی پر 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 ke pehle frame ko sabit tasveer ke roop mein load karein
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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں