发现:
- Picasso v/s ImageLoader的区别在于...
- 关于GLIDE库的信息...
- Facebook有自己的库Fresco...
- 列表中最新的添加是Coil。
问题:
- Picasso、Imageloader、Fresco和Coil之间的区别是什么?
- 哪个库是最好使用的?
- 如果每个库都有自己的意义,那它们是什么?
我是Fresco项目的一名工程师,所以很明显我有偏见。
但你不必听我的。我们发布了一个示例应用程序,可以让您并排比较五个库的性能-Fresco、Picasso、UIL、Glide和Volley Image Loader。您可以在我们的 GitHub 存储库中获取它。
我还应指出,Fresco可在Maven Central上使用,名称为com.facebook.fresco:fresco
。
Fresco提供了Picasso、UIL和Glide尚未具备的功能:
还有许多其他功能(请参阅我们的文档),但这些是最重要的。
请注意,这是一个高度基于个人观点的问题,因此我停止制造峡湾并制作了一个快速表格
现在,库的比较很困难,因为在许多参数上,这四个库几乎都可以做同样的事情,除了Fresco可能有一整套新的内存级别优化。因此,请告诉我您想看到基于我的经验进行比较的特定参数。
由于我使用Fresco最少,所以答案可能会随着我继续使用和理解它的当前漏洞而发展。 个人使用
是指至少在完成的应用程序中使用过该库一次。
* 注意-Fresco现在支持GIF以及WebP动画
(-)
(+)
(-)
(+)
Glide 源码
(-)
(+)
通用图像加载器 源代码
(-)
(+)
我在SGS2(Android 4.1)上进行了测试(WiFi 8.43 Mbps) 官方版本适用于Java,不适用于Xamarin! 2015年10月19日 我更喜欢使用Glide。 阅读更多信息,请单击此处。 如何使用Glide将缓存写入外部存储(SD卡)。
ImagePipelineConfig.setDownsampleEnabled(true)
来防止它冻结。但是有时会跳过 GIF 的帧。如果你的应用程序只显示静态图像,我认为你可以试一试。 - Kimi Chiu这些答案完全是我的个人看法。
Picasso是一个易于使用的图像加载器,同样适用于Imageloader。Fresco采用了一种不同的图像加载方法,我还没有使用它,但它看起来更像是从网络获取并缓存图像,然后显示图像,而不是像Picasso/Imageloader/Glide等其他方式,这些方式更多地显示屏幕上的图像,也可以从网络获取和缓存它们。
Glide试图与Picasso有点可互换。我认为当它们被创建时,Picasso的想法是遵循HTTP规范,让服务器决定缓存策略并缓存全尺寸图像并按需调整大小。 Glide也是遵循HTTP规范,但尝试通过做出一些不同的假设来拥有较小的内存占用量,例如缓存调整大小的图像而不是全尺寸图像,并使用RGB_565而不是RGB_8888显示图像。这两个库都提供默认设置的完全自定义。
哪个库是最好使用的确实很难说。Picasso、Glide和Imageloader都是备受尊敬和经过充分测试的库,所有这些库在默认设置下都很容易使用。Picasso和Glide只需要一行代码即可加载图像并具有占位符和错误图像。自定义行为也不需要太多的工作。Imageloader也是一个比Picasso和Glide还要老的库,然而我没有使用它,所以无法对性能/内存使用/自定义等方面做出评价,但看github上的readme给我的印象是它也相对容易使用和设置。因此,在选择这3个库中的任何一个时,你都不会做出错误的决定,更多的是个人口味问题。对于Fresco,我的看法是它是另一个Facebook库,所以我们必须看看它将如何为他们工作,迄今为止,他们的记录并不好。就像Facebook SDK仍未正式发布在mavenCentral上我自2014年9月以来就没有使用过Facebook SDK,看起来他们在2014年10月将第一个版本放在了mavenCentral上。因此,我们需要一些时间才能得出关于它的好意见。
在这三个知名库之间,我认为它们之间没有显著的区别。唯一突出的是Fresco,因为它采用了不同的方法,并且是新的还没有经过实战检验。
无论是Glide还是Picasso都不是完美的。Glide将图像加载到内存并进行缓存的方式比Picasso更好,这使得图像加载速度更快。此外,它还有助于防止应用程序出现常见的OutOfMemoryError。GIF动画加载是Glide提供的一个杀手级功能。然而,Picasso解码图像的质量比Glide更好。
我更喜欢哪个?虽然我使用Picasso很长时间了,但我必须承认我现在更喜欢Glide。但我建议您将位图格式更改为ARGB_8888,并让Glide首先缓存完整大小的图像和缩小后的图像。剩下的就能很好地完成您的工作!
RGB_565
来减少内存使用。+1 对于Picasso Palette Helper。
有一篇关于Picasso与Glide的文章文章
由于项目中使用了Drawee视图,所以Fresco没有参加基准测试。
我的建议是选择Universal Image Loader,因为它可以自定义、内存消耗低,并且在大小和方法之间保持平衡。
如果你有一个小项目,我会选择Glide(或者尝试一下Fresco)。