Picasso: یہ کیا ہے، تصاویر لوڈ کرنا اور Android ایپلیکیشنز میں کام کرنا

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

Picasso Android ایپلیکیشنز میں تصاویر لوڈ کرنے کے لیے Square کمپنی کی تیار کردہ ایک لائبریری ہے۔ یہ لائبریری نیٹ ورک سے گرافکس لوڈ کرنے، کیش کرنے اور ڈسپلے کرنے کے لیے ایک سادہ اور اظہار خیال API فراہم کرتی ہے۔ Picasso کے GitHub اعدادوشمار کے مطابق، لائبریری 100,000 سے زیادہ بار ڈاؤن لوڈ کی جا چکی ہے۔ Picasso خود بخود میموری کا انتظام کرتی ہے اور تصاویر کو متعدد سطحوں پر کیش کرتی ہے۔

اہم نکات

  • Picasso — Square کی Android کے لیے سادہ API والی تصویر لوڈ کرنے کی لائبریری
  • کیشنگ ڈسک اور میموری پر بار بار لوڈ ہونے والی تصاویر کا وقت کم کرتی ہے
  • ٹرانسفارمیشنز Crop، Resize اور Rotate تصاویر پر فوری لاگو ہوتی ہیں
  • پلیس ہولڈر اور خرابی کی تصاویر لوڈنگ کے دوران اور خرابی پر ڈسپلے ہوتی ہیں
  • لوڈنگ ترجیحات تصاویر کی ڈسپلے ترتیب کو منظم کرنے کی اجازت دیتی ہیں

Picasso کیا ہے؟

Picasso Android میں غیر مطابقت پذیر تصویر لوڈنگ کے لیے Square کی بنائی ہوئی ایک لائبریری ہے۔ اس کا نام آرٹسٹ پابلو پکاسو کے نام پر رکھا گیا ہے، جو لائبریری کے فلسفے کی عکاسی کرتا ہے: ایک پیچیدہ کام کو سادہ اور خوبصورت API میں تبدیل کرنا۔ یہ Android کمیونٹی میں تصویر لوڈنگ کے لیے سب سے مقبول لائبریری ہے۔

Picasso کا فن تعمیر کم سے کم ہے: لائبریری لوڈنگ کے لیے تھریڈ پول، میموری کیش کے لیے LruCache اور ڈسک کیش کے لیے DiskLruCache استعمال کرتی ہے۔ Glide کے برعکس، Picasso کو AppGlideModule ترتیب کی ضرورت نہیں ہے اور انحصار شامل کرنے کے فوراً بعد استعمال کے لیے تیار ہے۔ یہ اسے پروٹوٹائپس اور چھوٹے پروجیکٹس کے لیے ایک مثالی انتخاب بناتا ہے۔

Picasso 2.8 تازہ ترین مستحکم ورژن ہے، جو Android API 21+ اور Java 8+ کے ساتھ مطابقت رکھتا ہے۔ لائبریری کو ترتیب کے لیے Gradle پلگ ان یا تشریحات کی ضرورت نہیں ہے، جو ورژنز کے درمیان منتقلی کو آسان بناتا ہے اور اپ ڈیٹس کے دوران خرابیوں کے امکان کو کم کرتا ہے۔ اپنی طویل تاریخ کے باوجود، Picasso دنیا بھر میں ہزاروں پروجیکٹس میں مانگ میں ہے۔

Picasso کا بنیادی کام URL کے ذریعے تصویر لوڈ کرنا، اسے ڈی کوڈ کرنا، ضرورت پڑنے پر سائز تبدیل کرنا اور ImageView میں ڈسپلے کرنا ہے۔ لائبریری خود بخود بیک گراؤنڈ تھریڈز، کیش اور فہرستوں میں ImageView کے دوبارہ استعمال کا انتظام کرتی ہے۔

2013 میں ریلیز ہونے کے بعد سے، Picasso Android کمیونٹی میں تصویر لوڈنگ کا معیار بن گئی ہے۔ لائبریری ہزاروں ایپلیکیشنز میں استعمال ہوتی ہے اس کے کم سے کم داخلے کی حد کی وجہ سے — پہلے استعمال کے لیے کوڈ کی صرف ایک لائن کافی ہے۔

ترجیحات اور درخواست منسوخی

Picasso میں ترجیحات تصاویر کی لوڈنگ ترتیب کو منظم کرنے کی اجازت دیتی ہیں۔ پہلے سے طے شدہ طور پر، تمام درخواستوں کی معمولی ترجیح ہوتی ہے، لیکن اہم تصاویر کے لیے priority طریقہ کے ذریعے اعلی ترجیح سیٹ کی جا سکتی ہے۔ اگر ImageView دوبارہ استعمال کیا جاتا ہے (مثال کے طور پر، RecyclerView میں)، Picasso خود بخود پچھلی درخواست منسوخ کر دیتی ہے اور نئی شروع کر دیتی ہے، اسکرول کرتے وقت تصویر کی ٹمٹماہٹ کو روکتی ہے۔

Picasso کی اہم خصوصیات

Picasso خصوصیات کا ایک مجموعہ پیش کرتی ہے جو غیر ضروری پیچیدگی کے بغیر موبائل ایپلیکیشنز میں تصاویر کے ساتھ کام کرنے کے اہم منظرناموں کو کور کرتی ہے۔

کثیر سطحی کیشنگ

Picasso کا کیش دو سطحوں پر مشتمل ہے: تیز رسائی کے لیے RAM اور مستقل ذخیرہ کے لیے ڈسک۔ تصویر کی درخواست کرتے وقت، لائبریری پہلے میموری کیش چیک کرتی ہے، پھر ڈسک، اور اس کے بعد ہی نیٹ ورک کی درخواست کرتی ہے۔ یہ بار بار لوڈ ہونے والی تصاویر کی ڈسپلے کو نمایاں طور پر تیز کرتا ہے۔

تصویر کی تبدیلیاں

تبدیلیاں ہر بار اصل کو ڈی کوڈ کیے بغیر تصویر کا سائز تبدیل کرنے، کاٹنے یا گھمانے کی اجازت دیتی ہیں۔ Picasso بلٹ ان تبدیلیاں CenterCrop اور CenterInside فراہم کرتی ہے، اور Transformation انٹرفیس کے ذریعے حسب ضرورت تبدیلیاں بنانے کی بھی اجازت دیتی ہے۔ تبدیل شدہ تصاویر الگ سے کیش کی جاتی ہیں۔

پلیس ہولڈر اور خرابی کی تصاویر

پلیس ہولڈر نیٹ ورک سے تصویر لوڈ ہونے کے دوران ڈسپلے ہوتا ہے، صارف کو بصری فیڈ بیک دیتا ہے۔ لوڈنگ ناکام ہونے پر خرابی کی تصویر دکھائی جاتی ہے۔ Picasso ایک ایسی تصویر بھی سپورٹ کرتی ہے جو نیا ورژن لوڈ ہونے تک ڈسپلے ہوتی ہے، جو اپ ڈیٹ ہونے والے اوتار کے لیے مفید ہے۔

مختلف ذرائع سے لوڈنگ

Picasso URL، وسائل، فائلوں، مواد فراہم کنندگان اور URI سے تصاویر لوڈ کرنے کی حمایت کرتی ہے۔ load() طریقہ ان تمام اقسام کے لیے اوورلوڈ کیا گیا ہے، اور لائبریری خود بخود ماخذ کا تعین کرتی ہے۔ وسائل اور فائلوں کے لیے، Picasso نیٹ ورک کی درخواست نہیں کرتی بلکہ براہ راست ڈیٹا لوڈ کرتی ہے، جو بلٹ ان گرافکس کی ڈسپلے کو تیز کرتا ہے۔

Picasso کیسے کام کرتی ہے؟

Picasso RequestCreator اور Dispatcher پر مبنی فن تعمیر استعمال کرتی ہے۔ ہر درخواست Picasso.get().load() کے ذریعے بنائی جاتی ہے اور تھریڈ پول میں عمل میں لائی جاتی ہے۔ Dispatcher درخواست قطار، ترجیحات اور ImageView کے دوبارہ استعمال پر منسوخی کا انتظام کرتی ہے۔

درخواست کا فن تعمیر

into(view) کال کرنے پر، Picasso ایک Action آبجیکٹ بناتی ہے جس میں URL، تبدیلیاں، ہدف اور کال بیک ہوتا ہے۔ Action کو Dispatcher قطار میں رکھا جاتا ہے۔ انجن Downloader (بطور ڈیفالٹ OkHttp) کے ذریعے تصویر لوڈ کرتا ہے، Bitmap ڈی کوڈ کرتا ہے، تبدیلیاں لاگو کرتا ہے اور نتیجہ UI تھریڈ کو دیتا ہے۔ تمام تصاویر خود بخود ImageView سائز میں فٹ ہو جاتی ہیں۔

java
Picasso.get()
    .load("https://example.com/image.jpg")
    .placeholder(R.drawable.placeholder)
    .error(R.drawable.error)
    .resize(400, 300)
    .centerCrop()
    .into(imageView)

Picasso کی تنصیب اور ترتیب

Picasso کی تنصیب Gradle کے ذریعے کی جاتی ہے۔ لائبریری Maven Central کے ذریعے تقسیم کی جاتی ہے اور پیچیدہ ترتیب کی ضرورت نہیں ہوتی۔ کم سے کم Android API ورژن 21 ہے۔

انحصار شامل کرنا

ماڈیول سطح کی build.gradle فائل میں implementation ‘com.squareup.picasso:picasso:2.8’ شامل کریں۔ Gradle مطابقت پذیری کے بعد، Picasso استعمال کے لیے تیار ہے۔ نیٹ ورک آپریشنز کے لیے، Picasso خود بخود OkHttp استعمال کرتی ہے اگر وہ پروجیکٹ میں موجود ہو، یا بلٹ ان HttpURLConnection استعمال کرتی ہے۔

groovy
dependencies {
    implementation "com.squareup.picasso:picasso:2.8"
}

// OkHttp سے لوڈ کرنے کے لیے Kafka (اختیاری)
implementation "com.squareup.okhttp3:okhttp:4.12.0"

ڈیبگ اشارہ اور کیش

Picasso کا ڈیبگ اشارہ ہر تصویر کے کونے میں ایک رنگین مثلث دکھاتا ہے: نیٹ ورک لوڈنگ کے لیے سرخ، ڈسک کیش کے لیے نیلا، میموری کیش کے لیے سبز۔ یہ Picasso مثال پر setIndicatorsEnabled(true) کال کرکے فعال ہوتا ہے۔ پہلے سے طے شدہ کیش سائز ڈیوائس کی دستیاب میموری کا 15% ہے۔

حسب ضرورت Picasso مثال ترتیب دینے کے لیے Picasso.Builder استعمال کریں۔ یہ بیک گراؤنڈ تھریڈز کے لیے Executor، نیٹ ورک درخواستوں کے لیے Downloader، MemoryCache اور DiskCache سیٹ کرنے کی اجازت دیتا ہے۔ حسب ضرورت مثال خاص طور پر ٹیسٹوں میں مفید ہے، جہاں Downloader کو ایک سٹب سے تبدیل کیا جا سکتا ہے جو نیٹ ورک کی درخواست کے بغیر تصویر واپس کرتا ہے۔

Picasso استعمال کی مثالیں

نیچے دی گئی مثالیں Picasso کے ساتھ کام کرنے کے عام منظرناموں کو ظاہر کرتی ہیں: ایک سادہ تصویر لوڈ کرنا، تبدیلیاں استعمال کرنا اور RecyclerView میں لوڈ کرنا۔

ImageView میں تصویر لوڈ کرنا

ImageView میں بنیادی لوڈنگ ایک ہی کال سے کی جاتی ہے۔ Picasso scaleType کو مدنظر رکھتے ہوئے خود بخود تصویر کو ویو کے طول و عرض میں فٹ کرتی ہے۔ لوڈنگ مکمل ہونے تک پلیس ہولڈر دکھایا جاتا ہے، اور کنکشن کی خرابی پر خرابی کی تصویر دکھائی جاتی ہے۔

java
Picasso.get()
    .load("https://example.com/photo.jpg")
    .placeholder(R.drawable.loading)
    .error(R.drawable.broken_image)
    .fit()
    .centerCrop()
    .into(imageView)

حسب ضرورت تبدیلی کا اطلاق

BlurTransformation دیے گئے رداس سے تصویر کو دھندلا کرتی ہے۔ حسب ضرورت تبدیلیاں transform طریقہ کے ساتھ Transformation انٹرفیس کو لاگو کرتی ہیں۔ کیش تبدیلی کے نتیجے کو ایک منفرد کلید کے تحت محفوظ کرتی ہے تاکہ اسے دوبارہ لاگو کرنے سے بچا جا سکے۔

java
public class BlurTransformation implements Transformation {
    @Override
    public Bitmap transform(Bitmap source) {
        Bitmap blurred = Bitmap.createBitmap(source);
        RenderScript rs = RenderScript.create(context);
        // دھندلاپن لگانا
        source.recycle();
        return blurred;
    }

    @Override
    public String key() {
        return "blur";
    }
}

RecyclerView میں تصاویر لوڈ کرنا

RecyclerView میں، Picasso خود بخود ان ImageViews کے لیے درخواستیں منسوخ کر دیتی ہے جو اسکرین سے باہر اسکرول ہو گئے ہیں اور پہلے سے لوڈ شدہ تصاویر کو دوبارہ استعمال کرتی ہے۔ یہ میموری لیکیج کو روکتا ہے اور ہموار اسکرولنگ کو یقینی بناتا ہے۔

java
public void onBindViewHolder(ViewHolder holder, int position) {
    String url = items.get(position).getImageUrl();
    Picasso.get()
        .load(url)
        .fit()
        .centerCrop()
        .into(holder.imageView);
}

Picasso بمقابلہ Glide: لائبریری کا موازنہ

Android کے لیے تصویر لوڈ کرنے والی لائبریری چنتے وقت Picasso اور Glide کا موازنہ ایک عام سوال ہے۔ دونوں لائبریریاں ایک ہی کام حل کرتی ہیں لیکن ان کی مختلف ترجیحات اور استعمال کی خصوصیات ہیں۔

Picasso ان پروجیکٹس کے لیے زیادہ موزوں ہے جہاں سادگی اور کم سے کم APK سائز اہم ہو۔ Glide کا انتخاب اس وقت کیا جاتا ہے جب GIF سپورٹ، ویڈیو فریم اور زیادہ سے زیادہ میموری آپٹیمائزیشن کی ضرورت ہو۔ Glide خود بخود تصویر کو عین ImageView سائز میں اسکیل کرتی ہے، جو بعض منظرناموں میں Picasso کے مقابلے میں میموری کی کھپت کو 50% تک کم کرتی ہے۔

کارکردگی کے ٹیسٹوں میں، Glide اپنے پری لوڈنگ میکانزم اور تیز اسکرولنگ کے دوران خودکار درخواست منسوخی کی بدولت RecyclerView کے ساتھ کام کرتے ہوئے بہتر نتائج دکھاتی ہے۔ Picasso ایک آسان حکمت عملی استعمال کرتی ہے، جو اسے پیش قیاس بناتی ہے لیکن بڑے ڈیٹا والیوم پر کم موثر۔

Picasso API سادگی اور کم سے کم سائز پر توجہ مرکوز کرتی ہے۔ Glide وسیع فعالیت پیش کرتی ہے: GIFs، متحرک تصاویر، ویڈیو فریم اور لائف سائیکل انضمام کی حمایت۔ Glide ImageView سائز میں خودکار اسکیلنگ کی بدولت میموری کو زیادہ موثر طریقے سے منظم کرتی ہے۔

معیارPicassoGlide
لائبریری کا سائز~120 KB~500 KB
GIF سپورٹنہیںہاں
ویڈیو فریمنہیںہاں
ڈیولپرSquareGoogle (Bumptech)
APIFluent چینRequestBuilder

Android Developer Relations کے مطابق، Google نئے پروجیکٹس میں تصویر لوڈنگ کے لیے Glide کو ترجیحی لائبریری کے طور پر تجویز کرتا ہے۔ Picasso سادہ پروجیکٹس کے لیے ایک بہترین انتخاب ہے جہاں GIFs اور ویڈیو فریم کی ضرورت نہیں ہے۔

اکثر پوچھے گئے سوالات

Picasso Glide سے کیسے مختلف ہے؟

Picasso سائز میں چھوٹی اور استعمال میں آسان ہے۔ Glide GIFs اور ویڈیو فریم کو سپورٹ کرتی ہے، میموری کو زیادہ موثر طریقے سے منظم کرتی ہے اور Google کی طرف سے تجویز کردہ ہے۔ انتخاب اضافی فارمیٹس کے لیے پروجیکٹ کی ضرورت پر منحصر ہے۔

Picasso کیش کیسے صاف کریں؟

Picasso کیش صاف کرنے کے لیے، ایک تصویر کے لیے Picasso.get().invalidate(url) طریقہ یا مکمل صفائی کے لیے shutdown() استعمال کریں۔ ڈسک کیش ایپ کو دوبارہ انسٹال کرنے پر یا سسٹم سیٹنگز کے ذریعے حذف ہو جاتی ہے۔

Picasso اسکرین روٹیشن کو کیسے ہینڈل کرتی ہے؟

Picasso اسکرین روٹیشن پر منحصر نہیں ہے۔ لوڈ کردہ تصاویر کیش میں محفوظ رہتی ہیں اور Activity کے دوبارہ بننے پر وہیں سے ڈسپلے ہوتی ہیں۔ رفتار بڑھانے کے لیے، لوڈ کردہ ڈیٹا کو محفوظ رکھنے کے لیے Picasso کے ساتھ ViewModel استعمال کریں۔

کیا Picasso Kotlin میں استعمال کی جا سکتی ہے؟

ہاں، Picasso Kotlin کے ساتھ مکمل طور پر مطابقت رکھتی ہے۔ Kotlin ڈویلپر زیادہ مختصر نحو کے لیے ایکسٹینشن فنکشن استعمال کر سکتے ہیں یا تصاویر لوڈ کرتے وقت null اقدار کو ہینڈل کرنے کے لیے koptional لائبریری لاگو کر سکتے ہیں۔

Picasso میموری کا انتظام کیسے کرتی ہے؟

Picasso میموری کیش کے لیے LruCache استعمال کرتی ہے، خود بخود غیر استعمال شدہ تصاویر صاف کرتی ہے۔ پہلے سے طے شدہ کیش سائز ایپ کی دستیاب میموری کا 15% ہے۔ جب میموری کم ہوتی ہے، Picasso onTrimMemory کے ذریعے وسائل جاری کرتی ہے۔

خلاصہ

  • Picasso — Square کی کم سے کم API والی ہلکی تصویر لوڈنگ لائبریری
  • کیشنگ ڈسک اور میموری پر خودکار سائز کے انتظام کے ساتھ
  • تبدیلیاں CenterCrop، CenterInside اور Transformation انٹرفیس کے ذریعے حسب ضرورت
  • پلیس ہولڈر اور خرابی کی تصاویر ہموار صارف تجربے کے لیے
  • خودکار درخواست منسوخی RecyclerView میں غیر ضروری لوڈنگ روکتی ہے
  • ڈیبگ اشارہ تصویر کے ماخذ کو بصری طور پر پہچاننے میں مدد کرتا ہے
  • لائبریری کا سائز صرف 120 KB — APK سائز پر کم سے کم اثر

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

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

مزید پڑھیں