¿Es posible descargar imágenes de la memoria caché en picasso?
Yo estaba usando UniversalImageDownloader
para mi app.in UIL podemos guardar imágenes de la memoria caché.
File cachedImage = ImageLoader.getInstance().getDiscCache().get(imageUrl); if (cachedImage.exists()) {// code for save 2 sd }
¿Es posible en picasso?
- Biblioteca de cargador de imágenes universal está actuando lento en Android 5.0 en comparación con Android 4.4.4
- Precargar algunas imágenes para listview con UniversalImageLoader
- UIL, Picasso - Las imágenes en adaptador siempre se recargan cuando se detiene el desplazamiento
- Picasso v / s Imageloader v / s Fresco vs Glide
- Solución local de caché de imágenes para Android: Square Picasso vs Universal Image Loader
- Android ImageView Universal Image Loader cambia imágenes en Scroll
- Listview recarga las imágenes ya cargadas mediante el cargador de imágenes Universal
- Cargar imágenes en GridView con Universal Image Loader
- ImageView con mapas de bits descargados desde URL (modo de repetición de mosaico)
Hay un método privado en Picasso –
Bitmap quickMemoryCacheCheck(String key) { Bitmap cached = cache.get(key); if (cached != null) { stats.dispatchCacheHit(); } else { stats.dispatchCacheMiss(); } return cached; }
Modifique la fuente según su necesidad.
Puedes hacer esto, usar OkHttp & Picasso:
public class APP extends Application{ public static OkHttpDownloader okHttpDownloader; @Override public void onCreate() { super.onCreate(); Picasso.Builder b = new Picasso.Builder(this); okHttpDownloader = new OkHttpDownloader(this); b.downloader(okHttpDownloader); Picasso.setSingletonInstance(b.build()); } }
A continuación, obtener el archivo de caché local de OkHttp:
Downloader.Response res = APP.okHttpDownloader.load(Uri.parse(your image Url),0); Log.i(TAG,"Get From DISK: " + res.isCached() ); storeImageFile(res.getInputStream());
Puede obtener bitmap desde ImangeView onSuccess () callback
Picasso.with(context).load(path).into(imageView, new Callback(){ public void onSuccess() { Bitmap bitmap = ((BitmapDrawable)imageView.getDrawable()).getBitmap(); //save bitmap to sdcard } public void onError() {} }
ADVERTENCIA: El mapa de bits guardado puede ser diferente al mapa de bits original.
Debajo del fragmento de código primero hará que Picasso cargue la imagen de la caché, si falla, a continuación, descargar y mostrar la imagen en imageView
Puede depurar el rendimiento de la memoria con
Picasso.with (appContext) .setIndicatorsEnabled (true);
- Verde (memoria, mejor rendimiento)
- Azul (disco, buen rendimiento)
-
Rojo (red, peor rendimiento).
//Debugging memory performance https://futurestud.io/tutorials/picasso-cache-indicators-logging-stats //TODO remove on deployment Picasso.with(appContext).setIndicatorsEnabled(true); //Try to load image from cache Picasso.with(appContext) .load(imageUrl) .networkPolicy(NetworkPolicy.OFFLINE).placeholder(R.drawable.ic_launcher) .placeholder(R.drawable.ic_launcher) .resize(100, 100) .error(R.drawable.ic_drawer) .into(markerImageView, new Callback() { @Override public void onSuccess() { } @Override public void onError() { // Try online if cache failed Picasso.with(appContext) .load(imageUrl) .placeholder(R.drawable.ic_launcher) .resize(100, 100) .error(R.drawable.ic_drawer) .into(markerImageView); } });