ImageLoader获取本地缓存图片的bitmap

来源:互联网 发布:民生银行软件有问题 编辑:程序博客网 时间:2024/05/19 23:57

在初始化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 exceptione.printStackTrace();}  return null;   }  

通过这个方法 我们就能获取到原始尺寸的图片了



0 1