Picasso क्या है?
Picasso (Square Inc. द्वारा विकसित) Android के लिए एक लोकप्रिय इमेज लोडिंग लाइब्रेरी है जो "इमेज लोडिंग को आसान बनाने" के सिद्धांत पर काम करती है। इसका API सरल और चेनिंग-आधारित है।
निर्भरता जोड़ें
// build.gradle (Module: app)
dependencies {
implementation 'com.squareup.picasso:picasso:2.71828'
// नवीनतम वर्जन के लिए Maven Central चेक करें
}
बुनियादी उपयोग
ImageView imageView = findViewById(R.id.imageView);
Picasso.get()
.load("https://example.com/image.jpg")
.into(imageView);
मुख्य फीचर्स और मेथड्स
प्लेसहोल्डर, एरर, और फॉलबैक
Picasso.get()
.load(url)
.placeholder(R.drawable.placeholder) // लोडिंग के दौरान
.error(R.drawable.error_image) // विफलता पर
.into(imageView);
रिसाइज़िंग और स्केलिंग
// सटीक आकार (अनुपात बदल सकता है) Picasso.get().load(url).resize(400, 400).into(imageView); // अनुपात बनाए रखते हुए फिट Picasso.get().load(url).fit().centerCrop().into(imageView); // केवल छोटा करें, बड़ा न करें Picasso.get().load(url).resize(400, 400).onlyScaleDown().into(imageView); // केंद्र में क्रॉप Picasso.get().load(url).centerCrop().into(imageView); // केंद्र में इनसाइड Picasso.get().load(url).centerInside().into(imageView);
रोटेशन
Picasso.get().load(url).rotate(90f).into(imageView); // 90 डिग्री Picasso.get().load(url).rotate(90f, pivotX, pivotY).into(imageView); // कस्टम पिवट
कॉलबैक्स
Picasso.get()
.load(url)
.into(imageView, new Callback() {
@Override
public void onSuccess() {
Log.d("Picasso", "इमेज लोड हुई");
}
@Override
public void onError(Exception e) {
Log.e("Picasso", "लोडिंग विफल", e);
}
});
ट्रांसफॉर्मेशन (कस्टम)
// कस्टम ट्रांसफॉर्मेशन क्लास
public class GrayscaleTransformation implements Transformation {
@Override
public Bitmap transform(Bitmap source) {
// ग्रेस्केल लॉजिक
return result;
}
@Override public String key() { return "grayscale"; }
}
// उपयोग
Picasso.get().load(url).transform(new GrayscaleTransformation()).into(imageView);
इंडिकेटर्स (डिबगिंग के लिए)
// केवल डिबग बिल्ड में
if (BuildConfig.DEBUG) {
Picasso.get().setIndicatorsEnabled(true); // लाल=नेटवर्क, नीला=डिस्क, हरा=मेमोरी
Picasso.get().setLoggingEnabled(true);
}
कैशिंग नियंत्रण
// नेटवर्क ऑनली (कैश बायपास) Picasso.get().load(url).networkPolicy(NetworkPolicy.NO_CACHE).into(imageView); // ऑफलाइन मोड Picasso.get().load(url).networkPolicy(NetworkPolicy.OFFLINE).into(imageView);
रिक्वेस्ट टैगिंग और कैंसिलेशन
// टैग के साथ लोड
Picasso.get().load(url).tag("profile").into(imageView);
// बाद में कैंसिल करें (जैसे RecyclerView में)
Picasso.get().cancelTag("profile");
Picasso vs Glide
| पहलू | Picasso | Glide |
|---|---|---|
| API सादगी | बहुत सरल | थोड़ा जटिल |
| GIF सपोर्ट | नहीं (केवल पहला फ्रेम) | पूर्ण सपोर्ट |
| वीडियो थंबनेल | नहीं | हाँ |
| कैशिंग नियंत्रण | बेसिक | उन्नत |
| मेमोरी उपयोग | कम | कॉन्फ़िगरेबल |
सर्वोत्तम अभ्यास
Picasso.get()सिंगलटन है, हर बार नया इंस्टेंस न बनाएं- RecyclerView में
.fit()या.resize()का उपयोग करके OOM से बचें - कस्टम
OkHttpClientके लिएPicasso.Builderका उपयोग करें - लाइफसाइकिल अवेयर लोडिंग के लिए
.fetch()या.get()का उपयोग करें