Glide-图片的压缩

Posted 夏雨_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Glide-图片的压缩相关的知识,希望对你有一定的参考价值。

前言:

这一节里面我们将介绍Glide如何对图片进行压缩,这一点在加载图片较多或者加载的图片像素很高的程序里面至关重要

Glide 系列目录

1.android图片显示相关知识

这里会讲一下图片显示相关的基础知识,如果不关心的可以直接跳到第二点,不过建议是最好看一下


1.1图片质量分类

安卓图片显示的质量配置主要分为四种:

  • ARGB_8888 :32位图,带透明度,每个像素占4个字节
  • ARGB_4444 :16位图,带透明度,每个像素占2个字节
  • RGB_565 :16位图,不带透明度,每个像素占2个字节
  • ALPHA_8 :32位图,只有透明度,不带颜色,每个像素占4个字节

(A代表透明度,RGB代表红绿蓝:即颜色)


1.2图片默认质量

Picasso的默认质量是 ARGB_8888
Glide的默认质量则为 RGB_565


1.3占用内存

加载一张4000 * 2000(一般手机拍摄的都超过这个像素)的图片

Picasso需要占用的内存为: 32MB

4000 * 2000 * 4 / 1024 / 1024 = 30 (MB)

Glide需要占用的内存为: 16MB

4000 * 2000 * 2 / 1024 / 1024 = 15 (MB)

也就是说只要同时加载几张图片,你的应用就会OOM(内存溢出了),最恐怖的是就算你的ImageView的宽高只有10px,同样会占用那么多内存,这就是为什么需要做图片压缩的原因了

2.图片质量的压缩或者提高

在Glide里面默认用的是RGB_565,如果需要修改,相对于Picasso来说会更加麻烦一些,在之前的文章中,讲到过如何修改Glide的图片质量,这里就不再做介绍了

通过GlideModule定制Glide
http://blog.csdn.net/yulyu/article/details/55194237

3.图片尺寸的压缩或者拉伸(override)

通过调用override,就可以把图片压缩到相应的尺寸来显示了,类似这些被处理过的图片,就是之前文章中提到的RESULT(处理图)

Glide.with(this).load(mUrl).override(300,300).into(mIv);

注意,这里具体会压缩到什么尺寸还会根据很多条件来计算,所以最终压缩的结果的宽高会比较接近你的传值,但是不一定会完全相同,如果感兴趣的可以期待本系列后面的Glide源码解析中的具体介绍

(一般来说控件是什么尺寸就传入相应的宽高,这样是比较适合的压缩比例)

热门文章

以上是关于Glide-图片的压缩的主要内容,如果未能解决你的问题,请参考以下文章

Glide的学习之路

Glide-图片的剪裁(ScaleType)

Glide 系列 图片加载框架对比

使用Glide模仿微信图片加载策略

使用Glide模仿微信图片加载策略

使用Glide加载圆角图片