关闭

universalImageLoader,picasso,glide,fresco图片选择库选择分析

标签: 图片imageLoderpicassoglidefresco
2047人阅读 评论(2) 收藏 举报
分类:

在图片加载这块,picasso,glide,universalImageLoader,fresco 这几个库算是目前做好的四个库了。本博客仅仅作为笔记记录,仅代表个人观点,不对之处,欢迎指出。

​universalImageLoader

一个强大的图片加载库,包含各种各样的配置,最老牌,使用也最广泛。但现在不维护了,比较遗憾。

Picasso

​square公司出品,精品之作,专注与加载高质量图片。

Picasso在加载网络图片方面非常简单粗暴:一行代码

Picasso.with(context) .load(url).resize(100, 100).centerCrop().into(imageView)

总结:使用方便,在图片加载出来的质量会好一些,如果项目中对图片的精度较高的,对图片有特殊要求的且不考虑性能的情况下选用较合适。

Fresco

FackBook推出的,非常强大的一个图片加载库,它能够从网络、本地存储和本地资源中加载图片。而且,为了节省数据和CPU,它拥有三级缓存。

Fresco 中设计有一个叫做 image pipeline 的模块。它负责从网络、本地文件系统,本地资源加载图片。为了最大限度节省空间和CPU时间,它含有3级缓存设计(2级内存,1级文件)。

Fresco 中设计有一个叫做 Drawees 模块,方便地显示loading图,当图片不再显示在屏幕上时,及时地释放内存和空间占用。

特性

内存管理
解压后的图片,即Android中的Bitmap,占用大量的内存。大的内存占用势必引发更加频繁的GC。在5.0以下,GC将会显著地引发界面卡顿。

在5.0以下系统,Fresco将图片放到一个特别的内存区域。当然,在图片不显示的时候,占用的内存会自动被释放。这会使得APP更加流畅,减少因图片内存占用而引发的OOM。

Fresco 在低端机器上表现一样出色,你再也不用因图片内存占用而思前想后。

图片的渐进式呈现
渐进式的JPEG图片格式已经流行数年了,渐进式图片格式先呈现大致的图片轮廓,然后随着图片下载的继续,呈现逐渐清晰的图片,这对于移动设备,尤其是慢网络有极大的利好,可带来更好的用户体验。

Android 本身的图片库不支持此格式,但是Fresco支持。使用时,和往常一样,仅仅需要提供一个图片的URI即可,剩下的事情,Fresco会处理。

Glide

Google推荐使用的,并且是由Google在维护,专注于流畅的滚动。

Glide更易用,因为Glide的with方法不光接受Context,还接受Activity 和 Fragment,Context会自动的从他们获取。同时将Activity/Fragment作为with()参数的好处是:图片加载会和Activity/Fragment的生命周期保持一致,比如Paused状态在暂停加载,在Resumed的时候又自动重新加载。

Glide加载的图片质量要差于Picasso,这是因为Glide默认的Bitmap格式是RGB_565,比ARGB_8888格式的内存开销要小一半。

Picasso和Glide在磁盘缓存策略上有很大的不同。Picasso缓存的是全尺寸的,而Glide缓存的是跟ImageView尺寸相同的。Glide的这种方式优点是加载显示非常快。而Picasso的方式则因为需要在显示之前重新调整大小而导致一些延迟。

Glide可以加载GIF动态图,而Picasso不能。

默认使用手机内置存储进行磁盘缓存,可以配置为外部存储,可以配置缓存大小,图片池大小。

默认使用两个线程池来分别执行读取缓存和下载任务,都可以自定义

glide与picasso具体的对比链接

测试

测试了picasso,glide,universalImageLoader,fresco这四个框架,测试内容大概有以下几项,内存测试,大图片测试,小图片测试,本地图片。

简单总结:

1、内存方面,glide,universalImageLoader,fresco很优秀了。picasso有些失望,小图片还好,稍微大一点内存直接翻倍的增长。
2、高于2M左右大图测试中fresco的表现则和picasso显示超过3-5秒,有些出乎意料。
​3、universalImageLoader和glide比较快。项目中如果有图片在线预览功能,前面2者不建议使用了。
4、本地图片的话,四个库基本都OK,没有太大的差异。

综合:

1、glide默认提供配置支持本地图片缓存,缓存的机制是DiskLruCache.可以根据自己的需要,自定义图片缓存的路径.所以在考虑节省用户流量来看可以不考虑picasso;

2、虽然fresco也提供更强大的图片缓存和加载机制,不过在比较之后,感觉fresco还是有待完善,glide可以很简单的获取网络图片的Bitmap对象,而fresco需要通过订阅数据源克隆Bitmap对象的引用才能存储值.操作方式不够简洁和友好.

3、fresco的库文件中,以最新的0.8.1为例,imagepipeline-0.8.1.aar光包得大小就有3.5M ,而glide包的大小为465K为了让Apk包得体积更小,所以考虑使用glide.

最终选择:glide

3
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Android 四大大图片缓存(Imageloader,Picasso,Glide,Fresco)原理、特性对比

四大图片缓存基本信息 Universal ImageLoader 是很早开源的图片缓存,在早期被很多应用使用。   Picasso 是 Square 开源的项目,且他的主导者是 JakeWh...
  • qq_25690935
  • qq_25690935
  • 2016-01-20 14:51
  • 10140

主流图片加载框架ImageLoader、Glide、Picasso、Fresco性能分析---图片加载速度比较

图片加载这种实现繁琐,可复用性又极强的东西最好是使用图片加载框架来实现。 到Github上面搜索下,关键词Android ImageLoad,ImageLoader、Glide、Picasso、Fr...
  • zivensonice
  • zivensonice
  • 2016-07-06 23:30
  • 4816

Picasso,Glide,Fresco对比分析

前言 图片加载是Android开发中最最基础的功能,同时图片加载OOM也一直困扰着很多开发者,因此为了降低开发周期和难度,我们经常会选用一些图片加载的开源库。 老牌的有ImageLoad...
  • github_33304260
  • github_33304260
  • 2017-04-18 00:59
  • 6449

Android图片加载库对比:Universal-Image-Loader vs Glide vs Fresco vs Picasso几大框架的选择

Android图片加载库对比:Universal-Image-Loader vs Glide vs Fresco vs Picasso几大框架的选择 这几天刚好有时间,把之前的对Android 图片...
  • daxiong25
  • daxiong25
  • 2017-01-27 14:11
  • 538

网络请求库(ion、volley、retrofit)和图片加载库(glide、picasso、fresco)

网络请求库(ion、volley、retrofit)和图片加载库(glide、picasso、fresco) 标签: 网络请求库图片加载库retrofitfresco 2017-03-30...
  • w690333243
  • w690333243
  • 2017-07-12 09:07
  • 448

网络请求库(ion、volley、retrofit)和图片加载库(glide、picasso、fresco)

前言 熟练掌握目前最流行网络请求类库的使用,如: Ion:Android Asynchronous Networking and Image LoadingVolley:谷歌官方推出的网络...
  • chenkaisq
  • chenkaisq
  • 2017-03-30 11:44
  • 366

Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide图片缓存库的联系与区别

在Android中的加载网络图片是一件十分令人头疼的事情,在网上有着许多关于加载网络图片的开源库,可以让我们十分方便的加载网络图片。在这里介绍一下Universal-Image-Loader,andr...
  • Guofengpu
  • Guofengpu
  • 2016-06-20 11:38
  • 674

图片加载三方库ImageLoader,Fresco,Picasso,Glide

1.图像_UIL 主页: https://github.com/nostra13/Android-Universal-Image-Loader 使用步骤:添加依赖: compile ‘com.nost...
  • requestWindowFeature
  • requestWindowFeature
  • 2017-01-16 17:15
  • 400

Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide五大Android开源组件加载网络图片的优缺点比较

在android中的加载网络图片是一件十分令人头疼的事情,在网上有着许多关于加载网络图片的开源库,可以让我们十分方便的加载网络图片。在这里我主要介绍一下我自己在使用Volley, Picasso, U...
  • zjws23786
  • zjws23786
  • 2016-09-08 11:38
  • 572

Universal-Image-Loader,android-Volley,Picasso、Fresco和Glide五大Android开源组件加载网络图片的优缺点比较

在android中的加载网络图片是一件十分令人头疼的事情,在网上有着许多关于加载网络图片的开源库,可以让我们十分方便的加载网络图片。在这里我主要介绍一下我自己在使用Volley, Picasso, U...
  • cheng2290
  • cheng2290
  • 2016-09-21 11:49
  • 116
    个人资料
    • 访问:253876次
    • 积分:2576
    • 等级:
    • 排名:第16314名
    • 原创:34篇
    • 转载:0篇
    • 译文:2篇
    • 评论:67条
    博客专栏
    文章分类
    最新评论