3、Glide和Picasso、Fresco

转载:

Android网络加载图片库对比:Fresco、Glide、Picasso | KaelLi的博客

现在比较流行的图片加载库,有Facebook出品的Fresco,Square出品的Picasso和Google员工出品的Glide,都是出身名门。而曾经非常流行后来不再被维护更新的Android-Universal-Image-Loader则是大神Sergey Tarasevich(Github的ID是nostra13)的个人作品。由于UIL已经不再维护,所以除非你的老项目中还在使用又懒得替换,否则是不建议用的,今天也就不再把它列到对比中了,只对Fresco、Picasso和Glide进行对比。

先把Picasso排除掉

Glide和Picasso的区别:

Glide和Picasso的区别_孤独的冥王星的博客-CSDN博客_glide和picasso

谈谈你对Glide和Picasso他们的对比的优缺点 - brave-sailor - 博客园

Glide,Picasso,Fresco比较 - 简书

Picasso是Square公司出品的一款非常优秀的开源图片加载库,Picasso毕竟是Square出品,而且API设计的简单易用,对开发者是比较友好的。但是它有硬伤,就是本身不支持GIF动画,缓存图片的时候只是把原图给缓存了。
Glide是由Google开发,基于 Picasso,依然有保存了Picasso的简洁风格,但是在此做了大量优化与改进。Glide简直就是个加强版的Picasso,支持GIF动画,加载速度更好,很关键的一点在于API设计完全继承了Picasso,缓存的时候还可以根据ImageView的大小来缓存相应尺寸的图片(而不仅仅是原尺寸)。简而言之,Picasso能做的事情,Glide全部能做到,而且还多了一些优点,所以,只要你不是对APK的体积苛求到了极致(Glide比Picasso大了大概300K),就使用Glide吧。


区别,主要体现在下面几个方面:

1. 库的大小和方法的数量
Glide 要比 Picasso 大很多,基本上是 Picasso 的3.5倍

2. 缓存方式
Glide 默认的 Bitmap 格式是 RGB_565 格式,而Picasso默认的是 ARGB_8888 格式,这个内存开销要小一半。在磁盘缓存方面,Picasso只会缓存原始尺寸的图片,而 Glide 缓存的是多种规格,也就意味着 Glide会根据你ImageView的大小来缓存相应大小的图片尺寸,比如你ImageView大小是200*200,原图是 400*400,而使用Glide 就会缓存 200*200规格的图,而Picasso只会缓存 400*400 规格的。这个改进就会导致 Glide 比 Picasso 加载的速度要快

3. 加载图片速度
当内存中不存在时,Picasso会比Glide快一点,可能的原因是缓存机制导致,因为Picasso是直接把图加载到内存中,而Glid 则需要改变图片大小再加载到内存中去,这个应该是会耗费一定的时间。但是,当加载的图片在内存中时,Glide 则比 Picasso 要快。其原理还是因为缓存机制的区别。因为Picasso 从内存中拿到的图片,还要先去 resize 后,然后设定给 imageView,但是 Glide 则不需要这样。

4. 生命周期
Glide 相比 Picasso 的一大优势是它可以和 Activity 以及 Fragment 的生命周期相互协作,我们在调用 Glide.with() 函数时可以将 Activity 或者 Fragment 的实例传进去,这样 Glide 就会自动将图片加载等操作和组件的生命周期关联起来。

5. Glide可以加载视频缩略图

6. Glide 支持 GIF动态图
 

Fresco vs Glide才是重头戏

实际上Glide只是个人的开源作品,只不过因为作者在Google所以被大家另眼相待,而且Google官方的一些App也确实使用了Glide,性能表现很好,让大家很放心。相比较之下,Fresco则是Facebook官方Github帐号开源出来的,属于亲儿子,其性能之强大足以让包括Glide在内的任何同类库相形见绌。不过呢,我们需要的并不一定是最强的,而是最适合我们的。

开源库GlideFresco
layout对象原生ImageView特有的SimpleDraweeView
是否需要初始化不需要Fresco.initialize(this);
能否显示加载进度不能,需自己实现Yes
图片加载质量RGB565ARGB8888
缓存级别2级,内存和磁盘缓存3级,2个内存级和1个磁盘级
缓存图像大小原始大小和针对ImageView大小的result型原始大小
圆角图像需自己实现设置RoundingParams

从上面的表格中,可以看得出来Fresco更强大。实际上这个对比还不足以显示出Fresco的强大,毕竟那么大量的C++代码可不是用来玩的。值得注意的是,Fresco会让你的APK体积增大2-3MB,极端情况下会更多,如果你的应用原来就没多大,结果因为Fresco增加了很多,这就需要你权衡了。而Glide只有数百K,算是一个体积正常的第三方库。

在低版本手机里,应用在显示图片的时候容易出现OOM相信很多人是深有体会的,Fresco可以在最大程度上避免因大图片导致的OOM,当然Glide的表现也不错但还是比不上Fresco的。Glide的图片质量为RGB565,显示质量一般但体积较小,而Fresco则很大度的直接显示为最高质量的ARGB8888,在这种情况下还能保证良好的内存表现,就很能体现出Facebook的技术能力了。

那么如何在Glide和Fresco中进行选择呢?这就要因App而已了。如果你的应用中,不是很注重图片质量,也就是说每张图片的体积不大,不是一个以图片为主元素的应用,那么Glide就是一个非常合适的选择了,它不会让你的应用体积臃肿,而且可以很好的完成流畅加载图片并显示出来的任务。而如果你的应用中,图片显示占了很大的份量,甚至就是一个以显示图片为主的应用,那么不必太在意体积了,直接上Fresco吧,这个时候更好的图片质量和更好的内存处理才是王道。

Glide和Picasso、Fresco的区别:

Fresco & Glide & Picasso 比较_whyalwaysmea的博客-CSDN博客

Fresco基本使用:

android之Fresco框架(一)--Fresco基本使用_xuyueqing1225的博客-CSDN博客_android fresco使用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值