2013-08-27 29 views
4

我使用UniversalImageDownloader作为我的app.in UIL,我们可以保存高速缓存中的图像。是否可以从picasso中的缓存中下载图像?

File cachedImage = ImageLoader.getInstance().getDiscCache().get(imageUrl); 
      if (cachedImage.exists()) 
      {// code for save 2 sd 
          } 

毕加索可能吗?

+0

你真的应该停止复制您的问题! –

+0

@AndroSelva我能做些什么。这个问题不清楚。只有我在另一个问题中给出了确切的细节。 – Asthme

+0

我完全明白这一点。但是你仍然缺少一点。你不明白为什么你确实需要从缓存中获取图像!为什么? –

回答

1

有毕加索的私有方法 -

Bitmap quickMemoryCacheCheck(String key) { 
    Bitmap cached = cache.get(key); 
    if (cached != null) { 
     stats.dispatchCacheHit(); 
    } else { 
     stats.dispatchCacheMiss(); 
    } 
    return cached; 
    } 

根据您的需要修改源。

+0

我会尽力告诉.. – Asthme

+0

缓存缓存; StatsSnapshot统计信息;我在我的活动中声明了这个变量可以吗? – Asthme

+0

'quickMemoryCacheCheck'是'Picasso.class'的私有方法。你必须从'GIT'中提取源代码并修改源代码。 – Mihir

0

您可以从ImangeView的onSuccess()回调

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() {} 
} 

警告得到位图:保存位图可能是原始位不同。

1

你可以这样做,使用OkHttp &毕加索:

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()); 
} 
} 

然后得到OkHttp本地缓存中的文件:

Downloader.Response res = APP.okHttpDownloader.load(Uri.parse(your image Url),0); 
Log.i(TAG,"Get From DISK: " + res.isCached()); 
storeImageFile(res.getInputStream()); 
+0

为什么它必须扩展应用程序,并且可以扩展存储方法storeImageFile,包括代码? – Lion789

0

下面的代码片段将首先从缓存中让毕加索负荷的形象,如果失败,则下载并显示图像imageView

您可以使用

调试内存性能

Picasso.with(appContext).setIndicatorsEnabled(true);

  • 绿色(内存,性能最好)
  • 蓝色(磁盘,性能良好)
  • 红(网络,表现最差)。

     //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); 
           } 
          }); 
    
相关问题