Fresco:是Facebook 在今年上半年开源的图片缓存
优点:
1. 图片存储在安卓系统的匿名共享内存, 而不是虚拟机的堆内存中, 图片的中间缓冲数据也存放在本地堆内存,
所以, 应用程序有更多的内存使用, 不会因为图片加载而导致 oom, 同时也减少垃圾回收器频繁调用回收 Bitmap
导致的界面卡顿, 性能更高.
2. 渐进式加载 JPEG 图片, 支持图片从模糊到清晰加载
3. 图片可以以任意的中心点显示在 ImageView, 而不仅仅是图片的中心.
4. JPEG 图片改变大小也是在 native 进行的, 不是在虚拟机的堆内存, 同样减少 OOM
5. 很好的支持 GIF 图片的显示
缺点:
1. 框架较大, 影响 Apk 体积
2. 使用较繁琐
ImageLoader:很早开源的图片缓存,在早期被很多应用使用
比较老的框架, 稳定, 加载速度适中, 支持进度监听,可以在 View 滚动中暂停图片加载;缺点在于不支持GIF图片加载,使用稍微繁琐, 并且缓存机制没有和http的缓
存很好的结合, 完全是自己的一套缓存机制(完整大小).
Picasso:Picasso是 Square 开源的项目
使用方便, 一行代码完成加载图片并显示, 框架体积小,支持优先级处理, 支持延迟到图片尺寸计算完成加载
缺点在于不支持 GIF, 并且它可能是想让服务器去处理图片的缩放, 它缓存的图片是未缩放的, 并且默认使用
ARGB_8888 格式缓存图片, 缓存体积大.
Glide:是Google 员工的开源项目
可以说是 Picasso 的升级版, 有 Picasso 的优点, 并且支持 GIF 图片加载显示, 图片缓存也会自动缩放, 默认使用
RGB_565 格式缓存图片, 是 Picasso 缓存体积的一半.
总结
Glide 和 Picasso 都是非常完美的库。Glide 加载图像以及磁盘缓存的方式都要优于 Picasso,速度更快,并且 Glide 更有利于减少 OutOfMemoryError 的发生,GIF 动画是 Glide 的杀手锏。不过Picasso 的图片质量更高。如果使用 Glide,建议将 Bitmap 格式换成 ARGB_8888、让 Glide 缓存同时缓存全尺寸和改变尺寸两种。
Picasso 所能实现的功能 Glide 都能做到,只是所需设置不同。两者的区别是 Picasso 比 Glide 体积小很多且图像质量比 Glide 高,但Glide 的速度比 Picasso 更快,Glide 的长处是处理大型的图片流,如 gif、video,如果要制作视频类应用,Glide 当为首选。
Fresco 可以说是综合了之前图片加载库的优点,其在5.0以下的内存优化非常好,但它的不足是体积太大,按体积进行比较:Fresco>Glide>Picasso,所以 Fresco 在图片较多的应用中更能凸显其价值,如果应用没有太多图片需求,不推荐使用 Fresco。