我使用UniversalImageDownloader
作爲我的app.in UIL,我們可以保存高速緩存中的圖像。是否可以從picasso中的緩存中下載圖像?
File cachedImage = ImageLoader.getInstance().getDiscCache().get(imageUrl);
if (cachedImage.exists())
{// code for save 2 sd
}
畢加索可能嗎?
我使用UniversalImageDownloader
作爲我的app.in UIL,我們可以保存高速緩存中的圖像。是否可以從picasso中的緩存中下載圖像?
File cachedImage = ImageLoader.getInstance().getDiscCache().get(imageUrl);
if (cachedImage.exists())
{// code for save 2 sd
}
畢加索可能嗎?
有畢加索的私有方法 -
Bitmap quickMemoryCacheCheck(String key) {
Bitmap cached = cache.get(key);
if (cached != null) {
stats.dispatchCacheHit();
} else {
stats.dispatchCacheMiss();
}
return cached;
}
根據您的需要修改源。
您可以從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() {}
}
警告得到位圖:保存位圖可能是原始位不同。
你可以這樣做,使用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());
爲什麼它必須擴展應用程序,並且可以擴展存儲方法storeImageFile,包括代碼? – Lion789
下面的代碼片段將首先從緩存中讓畢加索負荷的形象,如果失敗,則下載並顯示圖像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);
}
});
你真的應該停止複製您的問題! –
@AndroSelva我能做些什麼。這個問題不清楚。只有我在另一個問題中給出了確切的細節。 – Asthme
我完全明白這一點。但是你仍然缺少一點。你不明白爲什麼你確實需要從緩存中獲取圖像!爲什麼? –