Picasso v / s Imageloader v / s Fresco vs Glide

时间:2015-03-31 07:48:48

标签: android universal-image-loader picasso fresco android-glide

调查结果:

  1. Picasso v/s ImageLoader here ...
  2. 之间的差异
  3. 有关图书馆GLIDE here ...
  4. 的信息
  5. 现在最近Facebook发布了名为的新图像库 Fresco

  6. 问题:

    1. Picasso v / s Imageloader v / s Fresco
    2. 之间的区别
    3. 我们什么时候可以使用Glide
    4. 哪个库是最好用的。
    5. 如果每个图书馆都有自己的意义,那么它们是什么?

6 个答案:

答案 0 :(得分:186)

我是Fresco项目的工程师之一。所以显然我有偏见。

但你不必接受我的话。我们发布了一个示例应用程序,可以让您比较五个库的性能--Fresco,Picasso,UIL,Glide和Volley Image Loader - 并排。你可以在our GitHub repo获得它。

我还应该指出,Fresco可以在Maven Central上找到com.facebook.fresco:fresco

Fresco提供Picasso,UIL和Glide尚未提供的功能:

  1. 图像不存储在Java堆中,而是存储在ashmem堆中。中间字节缓冲区也存储在本机堆中。这为应用程序留下了更多可用内存。它降低了OutOfMemoryErrors的风险。它还减少了应用程序必须执行的垃圾回收量,从而提高了性能。
  2. 可以流式传输JPEG图像,就像在网络浏览器中一样。
  3. 可以在任何点周围裁剪图像,而不仅仅是中心。
  4. JPEG图像可以原生调整大小。这样可以避免在尝试缩小图像时出现OOM问题。
  5. 还有很多其他人(see our documentation),但这些是最重要的。

答案 1 :(得分:130)

请注意,这是一个基于意见的问题,因此我不再制作峡湾并快速制作表格

enter image description here

现在库比较很难,因为在许多参数上,所有这四个几乎都做同样的事情,除了可能用于Fresco,因为它中有一大堆新的内存级别优化。所以让我知道你是否有某些参数&# 39;我希望根据我的经验看一个比较。

最少使用Fresco后,答案可能会随着我继续使用并在当前漏洞中理解它而发展。 used personally在已完成的应用中至少使用过一次库。

*注意 - Fresco现在支持GIF和WebP动画

答案 2 :(得分:108)

这些答案完全是我的意见

答案

  1. Picasso是一款易于使用的图像加载器,Imageloader也是如此。 Fresco采用了不同的图像加载方法,我还没有使用它,但它看起来更像是一个从网络获取图像并缓存然后显示图像的解决方案。然后像Picasso / Imageloader / Glide那样的另一种方式对我来说更多是在屏幕上显示图像,也可以从网络获取图像并缓存它们。

  2. Glide试图与Picasso有些互换。我认为当它们被创建时,Picasso的思维模式遵循HTTP规范,让服务器决定缓存策略并缓存完整大小并调整大小一经请求。 Glide与遵循HTTP规范相同,但通过做出一些不同的假设(例如缓存已调整大小的图像而不是全尺寸图像)来尝试拥有更小的内存占用,并使用RGB_565而不是RGB_8888显示图像。两个库都提供默认设置的完全自定义。

  3. 至于哪个库最好用,真的很难说。 Picasso,Glide和Imageloader是备受推崇的,经过良好测试的库,所有这些库都可以使用默认设置轻松使用。 Picasso和Glide都只需要1行代码来加载图像并具有占位符和错误图像。自定义行为也不需要那么多工作。同样适用于Imageloader,它也是一个比Picasso和Glide更老的库,但是我还没有使用它所以不能对性能/内存使用/自定义进行多少说明,但是看一下github上的自述文件给我的印象它也相对容易使用和设置。因此,在选择这3个图书馆中的任何一个时,您无法做出错误的决定,更多的是个人品味。对于壁画我的意见是它的另一个facebook库,所以我们必须看看它将如何为他们解决,到目前为止,跟踪记录并不是那么好。 就像facebook SDK仍然没有在mavenCentral上正式发布我从2014年9月开始就不习惯facebook sdk了,看来他们已经在2014年10月将第一个版本放到mavenCentral上了。所以它我们需要一些时间才能得到任何好的意见。

  4. 我认为3大名库之间没有显着差异。唯一突出的是壁画,但这是因为它采用了不同的方法而且是新的,而不是经过战斗测试。

答案 3 :(得分:104)

Fresco sources | off site
( - )
  - 图书馆规模庞大   - 无回调视图,位图参数
  - SimpleDraweeView不支持wrap_content
  - 巨大的缓存大小
(+)
  - 非常快速的图像加载器(用于小型和中型图像)
  - 许多功能(流媒体,绘图工具,内存管理等)
  - 可直接在xml中设置(例如圆角)
  - GIF支持
  - WebP和动画Webp支持


Picasso sources | off site
( - )
  - 慢速将大图像从互联网加载到ListView中 (+)
  - 图书馆的小锡尺寸   - 小尺寸缓存
  - 使用简单
  - UI不冻结
  - WebP支持


滑翔 sources

( - )
  - 图书馆的大尺寸 (+)
  - 缓存的小锡尺寸   - 使用简单
  - GIF支持
  - WebP支持
  - 快速将大图像从互联网加载到ListView中   - UI不冻结
  - BitmapPool重用内存,从而减少GC事件


通用图片加载器 sources

( - )
- 功能有限(图像处理受限)
- 项目支持自2015年11月27日起停止 (+)
- 图书馆的小锡尺寸 - 使用简单

我在SGS2(Android 4.1)(WiFi 8.43 Mbps)上测试了 Java的官方版本,不适用于Xamarin!
2015年10月19日

我更喜欢使用Glide。
阅读更多here
How to write cache to External Storage (SD Card)与Glide。

答案 4 :(得分:62)

Glide和Picasso都不是完美的。 Glide将图像加载到内存并进行缓存的方式比Picasso更好,后者可以更快地加载图像。此外,它还有助于防止应用程序受欢迎的OutOfMemoryError。 GIF动画加载是Glide提供的杀戮功能。无论如何,毕加索对比Glide更好的图像进行解码。

我更喜欢哪一个?虽然我使用毕加索这么长时间,但我必须承认我现在更喜欢格莱德。但我建议你将位图格式更改为ARGB_8888,然后让Glide缓存全尺寸图像并先调整大小。剩下的就是你的工作很棒!

  • Picasso和Glide的方法计数分别为840和2678。
  • Picasso(v2.5.1)的大小约为118KB,而Glide(v3.5.2)的大小约为430KB。
  • Glide为每个尺寸创建缓存图像,而Picasso保存完整图像并对其进行处理,因此在加载时,它会更快地显示Glide但使用更多内存。
  • Glide使用RGB_565默认使用更少的内存。

+1 Picasso Palette Helper

有一篇文章谈论毕加索与格莱德post

答案 5 :(得分:18)

我想与您分享我在 Picasso,Universal Image Loader和Glide 中所做的基准https://bit.ly/1kQs3QN

Fresco不在基准测试中,因为对于我正在进行测试的项目,我们并不想重构我们的布局(因为Drawee视图)。

我推荐的是通用图片加载器,因为它的自定义,内存消耗以及大小和方法之间的平衡。

如果你有一个小项目,我会选择Glide (或试试Fresco)。