Görüntü sunucuya bakmadan önce resim yüklenmemişse, görüntüleri yükleyen bir yöntem kullanmıştım. Daha sonra uygulama dosya sisteminde saklar. Dosya sistemindeyse, görüntüyü sunucudan çekmekten çok daha hızlı olduğu için bu görüntüyü yükler. Uygulamayı kapatmadan önce görüntüyü yüklediyseniz, bellek hatalarından kaçınmak için daha fazla bellek kullanmadan yeniden yüklenebilecek şekilde statik bir sözlükte depolanır.Picasso ile yüklenen ImageView'dan Bitmap alın
Bu, Picasso görüntü yükleme kitaplığını kullanmaya başladığım kadar iyi çalıştı. Şimdi görüntüleri bir ImageView'e yüklüyorum, ancak bir dosyaya veya statik sözlüğe kaydedebilmem için döndürülen Bitmap'i nasıl alacağımı bilmiyorum. Bu işleri daha da zorlaştırdı. çünkü görüntüyü sunucudan her seferinde yüklemeyi deniyor, ki olmasını istemediğim bir şey. ImageView içine yükledikten sonra Bitmap'i elde etmenin bir yolu var mı? Aşağıda benim kodum:
public Drawable loadImageFromWebOperations(String url,
final String imagePath, ImageView theView, Picasso picasso) {
try {
if (Global.couponBitmaps.get(imagePath) != null) {
scaledHeight = Global.couponBitmaps.get(imagePath).getHeight();
return new BitmapDrawable(getResources(),
Global.couponBitmaps.get(imagePath));
}
File f = new File(getBaseContext().getFilesDir().getPath()
.toString()
+ "/" + imagePath + ".png");
if (f.exists()) {
picasso.load(f).into(theView);
**This line below was my attempt at retrieving the bitmap however
it threw a null pointer exception, I assume this is because it
takes a while for Picasso to add the image to the ImageView**
Bitmap bitmap = ((BitmapDrawable)theView.getDrawable()).getBitmap();
Global.couponBitmaps.put(imagePath, bitmap);
return null;
} else {
picasso.load(url).into(theView);
return null;
}
} catch (OutOfMemoryError e) {
Log.d("Error", "Out of Memory Exception");
e.printStackTrace();
return getResources().getDrawable(R.drawable.default1);
} catch (NullPointerException e) {
Log.d("Error", "Null Pointer Exception");
e.printStackTrace();
return getResources().getDrawable(R.drawable.default1);
}
}
Herhangi bir yardım çok takdir edilecektir, teşekkür ederim!
Picasso, görüntüleri her zaman Sunucudan yüklemez. Sadece ilk kez önbellek dizininden yüklenir. – intrepidkarthi