Picasso v/s Imageloader v/s Fresco vs Glide

Dev*_*ath 336 android universal-image-loader picasso fresco android-glide

发现:

  1. Picasso v/s ImageLoader的区别在这里......
  2. 关于图书馆GLIDE的信息在这里......
  3. 现在最近Facebook发布了名为Fresco的新图像库

问题:

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

小智 188

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

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

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

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

  1. 图像不存储在Java堆中,而是存储在ashmem堆中.中间字节缓冲区也存储在本机堆中.这为应用程序留下了更多可用内存.它降低了OutOfMemoryErrors的风险.它还减少了应用程序必须执行的垃圾回收量,从而提高了性能.
  2. 渐进式JPEG图像可以流式传输,就像在Web浏览器中一样.
  3. 图像可以在任何点周围裁剪,而不仅仅是中心.
  4. JPEG图像可以原生调整大小.这样可以避免在尝试缩小图像尺寸时出现OOMing问题.

还有很多其他的(参见我们的文档),但这些是最重要的.

  • 他们在链接的后面加了一个's'.https://github.com/facebook/fresco/tree/master/samples (4认同)
  • 谢谢,您能否以表格格式将“我们发布了一个示例应用程序,允许您比较五个库的性能”的结果附在您的答案中? (2认同)

Sla*_*ast 131

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

在此输入图像描述

现在库比较很难,因为在许多参数上,所有这四个几乎都做同样的事情,除了Fresco,因为它有一大堆新的内存级别优化.所以让我知道你是否想要某些参数根据我的经验看一个比较.

最少使用Fresco后,答案可能会随着我继续使用并在当前漏洞利用中理解它而发展.将used personally制作完成的应用程序具有被使用的库ATLEAST一次.

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

  • 你错过了一个重要的方面....图书馆大小.这是Picasso和UImageLoader不支持GIF的主要原因.许可证也很好包括在内. (2认同)
  • @AhamadullahSaikat他个人使用的那些. (2认同)

Aeg*_*gis 109

这些答案完全是我的意见

答案

  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上的自述文件给我的印象是它也是相对容易使用和设置.因此,在选择这三个库中的任何一个时,您都无法做出错误的决定,更多的是个人品味.对于壁画我的意见是它的另一个facebook库,所以我们必须看看它将如何为他们解决,到目前为止,跟踪记录并不是那么好.就像facebook SDK还没有在mavenCentral上正式发布我从2014年9月开始就没有用过facebook sdk了,似乎他们已经在2014年10月将第一个版本放到mavenCentral上了.所以我们需要一些时间才能获得任何很好的意见.

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

  • Minor nit:似乎Facebook SDK已经在Maven Central上作为AAR正式推出了一段时间.https://developers.facebook.com/docs/android/getting-started#androidstudio (3认同)

Vol*_*lyk 105

Fresco 来源 | off site
( - )
- 巨大的库大小
- 没有View with View,Bitmap参数
- SimpleDraweeView不支持wrap_content
- 大小的缓存
(+)
- 非常快的图像加载器(适用于小型和中型图像)
- 很多功能(流媒体,绘图工具,内存管理等)
- 可直接在xml中设置(例如圆角)
- GIF支持
- WebP和动画Webp支持


毕加索 来源 | off site
( - )
- 慢速将大图像从互联网加载到ListView
(+)
- Tinny大小的库
- 小尺寸的缓存
- 使用简单
- UI不冻结
- WebP支持


Glide

( - )
- 库的大尺寸
(+)
- 缓存的Tinny大小
- 使用简单
- GIF支持
- WebP支持
- 快速将大图像从Internet加载到ListView
- UI不冻结
- BitmapPool重用内存和因此较少的GC事件


通用图像加载器

( - )
- 有限的功能(有限的图像处理)
- 自2015年11月27日
(+)以来项目支持已停止
- 库的大小
- 使用简单


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

我更喜欢使用Glide.在这里
阅读更多.
如何使用Glide 将缓存写入外部存储(SD卡).

  • "相当快的图像加载器"似乎与Fresco的"App freeze"相矛盾. (4认同)
  • 我在Xamarin项目中有Picasso,内存使用量很大(用于将图像加载到回收站视图中).`OutOfMemory`一直...... (2认同)

Dan*_*ico 62

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

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

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

+1为毕加索调色板助手.

有一篇文章谈论毕加索与格莱德的帖子


sho*_*ann 18

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

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

我推荐的是Universal Image Loader,因为它的定制,内存消耗以及大小和方法之间的平衡.

如果你有一个小项目,我会去Glide(或试试Fresco).