У меня был метод загрузки изображений, если изображение не было загружено до того, как оно будет искать его на сервере. Затем он хранит его в файловой системе приложений. Если он находится в файловой системе, он загружает это изображение, поскольку это намного быстрее, чем вытягивание изображений с сервера. Если вы загрузили изображение без закрытия приложения, оно будет храниться в статическом словаре, чтобы его можно было перезагрузить, не используя больше памяти, чтобы избежать ошибок в памяти.
Все это работало нормально, пока я не начал использовать библиотеку загрузки изображений Picasso. Теперь я загружаю изображения в ImageView, но я не знаю, как получить Bitmap, который возвращается, чтобы я мог хранить его в файле или статическом словаре. Это усложнило ситуацию. потому что это означает, что он пытается загружать изображение с сервера каждый раз, чего я не хочу. Есть ли способ получить Bitmap после загрузки его в ImageView? Ниже мой код:
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);
}
}
Любая помощь будет принята с благодарностью, спасибо!