美文网首页
Bitmap压缩策略

Bitmap压缩策略

作者: 小李同学今天博学了吗 | 来源:发表于2020-11-27 10:25 被阅读0次
为什么bitmap需要高效加载

因为现在图片的大小都比较大,如果按原尺寸显示的话应用就很可能会出现OOM,因为系统给每个App分的内存空间都不大

加载BitMap的方式

DecodeFile:从文件中加载
DecodeResourece:从应用的资源文件夹中加载
DecodeStream:从流中加载
DecodeByteArray:从字节数组中加载

BitmapFactory.Options的参数

1.inSampleSize参数
当inSampleSize = 1时,即采样后的图片大小为原始大小,当<1时,按1来算,当》1s时,缩放比例为1/(inSampleSize)的二次方
如:102410244 = 4M,如果inSampleSize=2,那么采样后的图片内存大小为1M

2.inJustDecodeBounds参数
这个参数的作用就是获取图片的宽、高,不加载图片,这样我们就可以提前计算好缩放比了。

流程

1将BitmapFactory.Options的inJustDecodeBounds参数设为true并加载图片。
2从BitmapFactory.Options中取出图片的原始宽高信息,它们对应于outWidth和 outHeight参数。
3根据采样率的规则并结合目标View的所需大小计算出采样率inSampleSize。
4将BitmapFactory.Options的inJustDecodeBounds参数设为false,然后重新加载 图片。

代码实现

public static Bitmap decodeSampledBitmapFromResource(Resources
res, int resId, int reqWidth, int reqHeight){
           BitmapFactory.Options options = new BitmapFactory.Options();
            options.inJustDecodeBounds = true;
          //加载图片
            BitmapFactory.decodeResource(res,resId,options);
           //计算缩放比
            options.inSampleSize = calculateInSampleSize(options,req Height,reqWidth);
           //重新加载图片
           options.inJustDecodeBounds =false;
          return BitmapFactory.decodeResource(res,resId,options);
}
private static int calculateInSampleSize(BitmapFactory.Optio ns options, int reqHeight, int reqWidth) {
           int height = options.outHeight;
           int width = options.outWidth;
          int inSampleSize = 1;
           if(height>reqHeight||width>reqWidth){
                int halfHeight = height/2;
                  int halfWidth = width/2;
               //计算缩放比,是2的指数
             while((halfHeight/inSampleSize)>=reqHeight&&(halfWidth/inSampleSize)>=reqWidth){
                inSampleSize*=2;
}
 }
        return inSampleSize;
    }

相关文章

  • Bitmap压缩策略

    为什么bitmap需要高效加载 因为现在图片的大小都比较大,如果按原尺寸显示的话应用就很可能会出现OOM,因为系统...

  • Android Bitmap压缩策略

    一、为什么Bitmap需要高效加载? 现在的高清大图,动辄就要好几M,而Android对单个应用所施加的内存限制,...

  • 2019-11-05

    Bitmap Bitmap 细说Bitmap bitmap的六种压缩方式,Android图片压缩 1.先讲讲屏幕密...

  • Android性能优化-Bitmap优化

    一、Bitmap质量压缩 二、Bitmap尺寸压缩 Bitmap优化加载的核心思想就是采用BitmapFactor...

  • Android图片压缩

    一.质量压缩 二.按比例大小压缩(根据Bitmap路径) 三.组合质量和按比例大小压缩(根据Bitmap压缩)

  • 收集_Android源码文章

    一、Bitmap: Android bitmap压缩优化方案Android性能优化系列之Bitmap图片优化 二、...

  • Bitmap压缩

    Bitmap占用内存大小 = 长 * 宽 * 一个像素点占用的字节数,因此降低任意一个参数的值,就可以达到压缩的目...

  • Volley图片压缩代码分析

    Volley的ImageRequest中的图片压缩代码 参考文章: Bitmap 解析 Bitmap 详解 你的 ...

  • Bitmap

    Bitmap 本质上是一个 数据压缩策略。在大量int 数据的时候,利用 计算机的存储结构特性,即 1 byte ...

  • Android 将bitmap 将图片压缩到指定的大小

    方法调用案例 压缩bitmap方法的封装

网友评论

      本文标题:Bitmap压缩策略

      本文链接:https://www.haomeiwen.com/subject/prdvjktx.html