Bitmap三级缓存+二次采样

本文详细探讨了Bitmap的三级缓存机制,包括内存缓存、SD卡缓存和网络下载,并介绍了实现缓存的代码实现。同时,讨论了Bitmap的二次采样,用于在网络请求图片时进行尺寸压缩,降低内存消耗。最后,提到了Bitmap的质量压缩方法,通过调整压缩质量来节省存储空间。
摘要由CSDN通过智能技术生成

第6天Bitmap三级缓存+二次采样
Bitmap三级缓存
一.为什么Bitmap三级缓存?
二.原理
三.代码
Bitmap二次采样
一.为什么二次采样
二.哪二次采样
三.代码:网络请求图片进行尺寸压缩
Bitmap的质量压缩
1.方法介绍
2.案例:将一张Bitmap图片采用50%质量压缩到SD卡中
Bitmap三级缓存
一.为什么Bitmap三级缓存?
没有缓存的弊端 :费流量, 加载速度慢
加入缓存的优点: 省流量,支持离线浏览
二.原理

思路:

从内存获取图片, 如果存在, 则显示; 如果不存在, 则从SD卡中获取图片
从SD卡中获取图片, 如果文件中存在, 显示, 并且添加到内存中; 否则开启网络下载图片
从网络下载图片, 如果下载成功, 则添加到缓存中, 存入SD卡, 显示图片
三.代码
(1)添加读写SD卡的权限和网络权限

 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"></uses-permission>
 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
 <uses-permission android:name="android.permission.INTERNET"></uses-permission>!![在这里插入图片描述](https://img-blog.csdnimg.cn/20190612213005512.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xpemh1YW5nXzY2Ng==,size_16,color_FFFFFF,t_70)

(2)操作内存工具类:提供从内存中读写的方法,内存不能持久保存,可能过一会就会被回收掉

//Lrucache存储工具类

public class LruUtils {
    //TODO 1:实例化LruCache对象
    private LruCache<String,Bitmap> lruCache;
    private long max=Runtime.getRuntime().maxMemory();//获得手机的最大内存
    public LruUtils(){
        lruCache=new LruCache<String,Bitmap>((int)max/8){//给内存大小,一般是最大内存的1/8
            //重写该方法返回每个对象的大小
            @Override
            protected int sizeOf(String key, Bitmap value) {
                return value.getByteCount();
            }
        };
    }
    //TODO 2:读图片
    public Bitmap getBitmap(String key){
        return lruCache.get(key);
    }
    //TODO 3:存图片
    public  void setBitmap(String key,Bitmap bitmap){
        lruCache.put(key,bitmap);
    }
}

(3)操作SD卡工具类:提供从SD卡中读写的方法

//TODO 读图片和写图片

public class SDUtils {
    //TODO 1:存图片:bitmap.compress()
    public static void setBitmap(String name,Bitmap bi
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值