ImageLoader获取本地缓存图片的bitmap

本文介绍了如何利用ImageLoader获取已缓存的图片Bitmap,包括内存缓存和本地存储中的图片,以便于在不消耗额外流量的情况下获取图片尺寸等信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在初始化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;  
	 }  

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



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值