Glide和Picasso的比较

Glide 和 Picasso 可以说是目前 Android 上最流行的图片加载库了。大部分安卓应用开发人员都有使用过这两个库在他们的开发工作中。这两个库也都确实提供了大量图片加载的功能,而且也都经过了很多应用的检验,是可靠可信的。表面看上去似乎两者工作原理很相似,但是实际上是有着很大差别的,主要体现在下面几个方面:

  • 下载图片的方式
  • 图片的缓存机制
  • 加载到内存的机制

本文主要会围绕这几个方面来深入研究和对比两个库的差异,从而给开发者们提供参考。 对比的版本是 Glide v3.7.0 和 Picasso v2.5.2 的版本。

导入库到项目中

Picasso 和 Glide 都在 Jcenter 上有建立库,所以只需要简单的在添加dependency 即可

Picasso

dependencies {
    compile 'com.squareup.picasso:picasso:2.5.1'
}

Glide

dependencies {
    compile 'com.github.bumptech.glide:glide:3.5.2'
}

相同

1.两个库也都支持缓存图片,都通过下载图片后,缓存到本地。

区别

 1.   with值

Picasso.with()  ------->Context context

Gilde.with( )------>  Context context    Activity activity    FragmentActivity activity   Fragment fragment

2.  图片质量

Picasso   默认ARGB-8888格式

Glide     默认的Bitmap格式为RGB-565

3.  加载GIT图

Glide动画会消耗太多的内存

4.  缓存策略和加载速度

Picasso     下载图片然后缓存完整的大小到本地,

Glide        Glide 是会先下载图片,然后改变图片的大小,以适应 imageView 的要求,然后缓存到本地

缓存策略

(将ImageView调整成不同的大小,不管大小如何Picasso值缓存一个尺寸,Glide会为每个ImageView缓存一次)

(Glide让加载非常快 Picasso 因为需要在显示之前调整大小而又延迟)

5.  加载图片的时间

    当尝试加载一个图片的时候,两个库都会采用先从缓存中读取,如果缓存中没有,再去下载的做法。

··········1.当加载因为Picasso 是直接把图加载到内存中,而 Glide 则需要改变图片大小再加载到内存中去。这个应该是会耗费一定的时间。

··········2.加载图片从内存中的时候,Glide比Picasso快 原理是因为缓存机制的区别,Picasso从缓存中拿到图片先去resize后设定给imageview 但是Glide不需要这样

6. 库的大小和方法的数量

Glide是Picasso的3.5倍   Glide有2678个     Picasso有849个

7.使用方式

如果只是简单的从一个 URL 中下载图片,然后显示到 imageView 中,那么两个库的使用方式基本相似,也都非常的简单。同时两个库也都支持动画和大小的剪切,也可以设置加载时候的预设图片等功能: Picasso:

Picasso.with(myFragment)
.load(url)
.centerCrop()
.placeholder(R.drawable.loading_spinner)
.into(myImageView);

Glide:

Glide.with(myFragment)
.load(url)
.centerCrop()
.placeholder(R.drawable.loading_spinner)
.crossFade()
.into(myImageView);


8.其他功能的对比

  • GIF 支持:Glide 支持 GIF。 对于加载 GIF 来说,Glide 只需要简单使用 Glide.with(...).load(...)。 但是 Picasso 是不支持的,因此如果你的应用中是需要加载 GIF 的话,那就只能用 Glide 了。

  • 灵活性:Glide 提供了非常多的配置,你可以非常灵活的根据你的需求来客制化,从而缩减 Glide 库的大小等。

总结

正所谓人无完人,经过一番对比,Picasso 和 Glide 各有千秋,那么到底我们应该用哪个库呢?这个还是回到应用的需求来看,比如你想要你的 app 小一些,没有那么多的额外功能,那么 Picasso 是你的首选。反之,比如你的应用中需要加载 GIF,或者对于内存的大小比较在意,那么 Glide 应该是不错的选择。

1. Glide比Picasso加载速度快,但Glide比Picasso需要更大的空间来缓存

2.Glide加载图像及磁盘缓存的方式都优于Picasso,且Glide更有利于减少OitOfMemoryError的发生

3.GIF动画是Glide的杀手锏

猜你喜欢

转载自blog.csdn.net/hy3098626581/article/details/79961415