在初始化imageoption的时候,如果我们调用了.cacheInMemory()和.cacheOnDisc(),加载图片使用这个Option,图片加载完成以后就会缓存到内存和本地存储中;
这时候 如果是加载过的图片,我们直接加载的时候,出现的之前存的图片,这样就不会消耗流量。
不过有时候我们需要获得图片的尺寸等信息,无法直接获取,我们就需要获取图片的bitmap,但是我们又不愿意重新再去下载图片,这样既消耗资源又消耗流量,得不偿失,其实ImageLoader本身就为我们提供了获取缓存图片的方法;
根据url获取缓存bitmap方法如下
public static Bitmap getCacheImage(String uri){//这里的uri一般就是图片网址
List<String> memCacheKeyNameList = MemoryCacheUtil.findCacheKeysForImageUri(uri , mImageLoader.getMemoryCache());
if(memCacheKeyNameList != null && memCacheKeyNameList.size() > 0){
for(String each:memCacheKeyNameList){
}
return mImageLoader.getMemoryCache().get(memCacheKeyNameList.get(0));
}
return null;
}
此方法可以获取内存缓存中的bitmap,但是,内存中的图片并不代表原图,因为imageloader做了缩略图,按照这个拿来一般是不对的,这时候我们可以从本地存储中获取原始图片缓存,方法如下
public static Bitmap getDiscCacheImage(String uri){//这里的uri一般就是图片网址
File file = DiscCacheUtil.findInCache(uri, mImageLoader.getDiscCache());
try {
String path= file.getPath();
return BitmapFactory.decodeFile(path);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return null;
}
通过这个方法 我们就能获取到原始尺寸的图片了