发现:


Picasso v / s ImageLoader的区别在这里
...

关于GLIDE库的信息在这里...

现在,Facebook最近发布了一个名为
Fresco




的新图像库。问题:



Picasso v / s Imageloader v / s Fresco有什么区别
什么时候可以使用Glide
哪个是最好的库?
如果每个库都有自己的意义,那么他们?


评论

我也对壁画感兴趣。任何人都可以解释差异吗?

twitter.com/jessewilson/status/581235604740042752

这里不是问基于意见的问题的地方

@ danny117,如果对此一无所知,该怎么办?

@ShobhitPuri此工具将帮助您检查方法计数

#1 楼

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

但是你不必信守我的诺言。我们已经发布了一个示例应用程序,可让您并排比较五个库(壁画,毕加索,UIL,Glide和Volley Image Loader)的性能。您可以在我们的GitHub存储库中获得它。

我还应该指出,Fresco在qq1202079q上可以在Maven Central上使用。

Fresco提供了Picasso,UIL和Glide还没有:图像不存储在Java堆中,而存储在ashmem堆中。中间字节缓冲区也存储在本机堆中。这为应用程序留出了更多的可用内存。它降低了OutOfMemoryErrors的风险。它还减少了应用程序必须执行的垃圾收集数量,从而提高了性能。
可以像在Web浏览器中一样流式传输JPEG图像。
图像可以在任意点上裁剪,而不仅仅是中心。
JPEG图像可以本地调整大小。这样可以避免在尝试缩小图像时进行OOMing的问题。

还有很多其他问题(请参阅我们的文档),但这是最重要的。

评论


谢谢,您是否可以将表格形式的“我们发布了一个示例应用程序,使您可以比较五个库的性能”的结果附在答案上?

– mmlooloo
2015年4月10日在18:44

壁画比其他具有更多的功能,但也更大。

–ligi
15年4月13日在12:42

他们在链接的后面添加了“ s”。 github.com/facebook/fresco/tree/master/samples

–谭咏麟
15年6月24日在17:08



@tyronen im对壁画感兴趣。是否允许从网络加载本地图像?谢谢

–GmloMalo
15-10-18在13:47

@wedi是的。

–酪氨酸
18-10-5在13:53

#2 楼

请注意,这是一个高度基于意见的问题,因此我停止制作峡湾,并制作了一个快速表格



现在库比较很困难,因为在许多参数上,所有除了Fresco以外,四个几乎都做同样的事情,因为其中有很多新的内存级别优化。因此,请根据我的经验告诉我是否想对某些参数进行比较。

最少使用了Fresco,随着我继续使用和了解当前漏洞利用方法,答案可能会演变。 used personally在完整的应用程序中至少使用过一次库。

*注意-壁画现在支持GIF以及WebP动画

评论


我对Fresco的“可定制性”,“网络图像使用”和“易用性”评级较低感到好奇。这些评级的依据是什么?

–酪氨酸
15年5月29日在11:53

大多数情况下是首次使用,将更多地使用Fresco进行理解,这个答案可能会有所发展:)

– Vrashabh Irde
2015年5月29日12:00

@Slartibartfast您是否有机会尝试壁画和最新的Glide 3.0版本?您还会对它们进行相同的评分吗?

–Shobhit Puri
15年8月28日在21:35

您错过了一个重要方面。图书馆的规模这是Picasso和UImageLoader不支持GIF的主要原因。许可证也应该包括在内。

– Codeversed
16 Jan 16'在2:16



@AhamadullahSaikat他个人使用的那些。

–皮埃尔
18年5月16日在13:13

#3 楼

壁画来源|异地
(-)

库很大

没有带视图的回调,位图参数

SimpleDraweeView不支持wrap_content

超大容量的缓存

相当快的图像加载器(适用于中小型图像)

许多功能(流,绘图工具,内存管理等)

可以直接在xml中设置(例如,圆角)

GIF支持

WebP和Animated Webp支持


毕加索源|异地
(-)

将互联网上的大图像缓慢加载到ListView

库的小尺寸

小尺寸的缓存

易于使用

UI不会冻结

WebP支持


> Glide来源(-)

库的大容量
(+)

缓存的小容量

简单易用

GIF支持

WebP支持

将互联网上的大图像快速加载到ListView中

UI不会冻结

BitmapPool可重新使用内存,从而减少GC事件的发生次数

通用图像加载器源(-)

功能受限(有限的图像处理)

自2015年11月27日起,项目支持已停止
(+)

库的大小很小

简单易用



我在SGS2(Android 4.1)(WiFi 8.43 Mbps)上进行了测试。
Java的正式版本,而不是Xamarin!
2015年10月19日我更喜欢使用Glide。如何将缓存写入带有Glide的外部存储(SD卡)。

评论


“非常快速的图像加载器”似乎与Fresco的“应用程序冻结”相矛盾。

– TWiStErRob
16年5月23日在21:44

我在Xamarin项目中有Picasso,并且内存使用量很大(用于将图像加载到回收器视图中)。总是内存不足...

–Vahid Amiri
16年8月20日在16:54

@ VSG24有2个选项:1)您使用错误。 2)Xamarain的Android(java)版本的lib不同

– Volodymyr Kulyk
16年8月22日在7:17

作为Glide负片(-),我经历了很多闪烁。加载的图像将“重设”到任何地方

–FRR
16-09-28在7:38

@RJFares我最近尝试了最新版本,可以使用ImagePipelineConfig.setDownsampleEnabled(true)防止其冻结。但是有时它会跳过GIF的帧。如果您仅在应用程序上显示静态图像,我想您可以尝试一下。

– Chimi Chiu
17 Mar 28'4:23



#4 楼

这些答案完全是我的看法

答案


Picasso是一个易于使用的图像加载器,Imageloader也是如此。壁画使用另一种方法来加载图像,我还没有使用过,但是我觉得它更像是一种从网络获取图像并将其缓存然后显示图像的解决方案。然后像Picasso / Imageloader / Glide这样的另一种方式,对我来说更像是在屏幕上显示图像,它也确实从网络上获取图像并缓存它们。
Glide试图与Picasso互换一些。我认为它们是在创建时毕加索的思维定律遵循HTTP规范,并让服务器决定缓存策略并缓存完整大小并按需调整大小。 Glide与遵循HTTP规范相同,但是通过做出一些不同的假设(例如,缓存调整大小后的图像而不是完整大小的图像,并显示具有RGB_565而不是RGB_8888的图像)来尝试减小内存占用。这两个库都提供对默认设置的完全自定义。
关于哪个库最适合使用,真的很难说。毕加索,Glide和Imageloader是备受推崇且经过良好测试的库,它们都易于使用默认设置使用。毕加索和Glide都只需要一行代码即可加载图像,并具有占位符和错误图像。自定义行为也不需要太多工作。 Imageloader也是如此,后者也是比Picasso和Glide还要老的库,但是我没有使用过它,所以不能过多地谈论性能/内存使用/自定义,但是查看github上的自述文件给我的印象是相对易于使用和设置。因此,在选择这三个库中的任何一个时,您都不会做出错误的决定,这更多地取决于个人喜好。对于壁画,我认为它是另一个Facebook库,因此我们必须看看如何为他们实现效果,到目前为止,跟踪记录并不是那么好。就像facebook SDK尚未在mavenCentral上正式发布一样,自2014年9月以来我还不习惯使用Facebook sdk,似乎他们已于2014年10月在mavenCentral上发布了第一个版本。因此,要花点时间我们还需要一些时间。我对此有很好的看法。
我认为3个知名图书馆之间没有显着差异。唯一脱颖而出的是壁画,但这是因为它采用了不同的方法,并且是新颖的,没有经过战斗测试。


评论


次要要点:Facebook SDK似乎已经在Maven Central上作为AAR正式可用了一段时间。 developers.facebook.com/docs/android/…

–orip
15年4月28日在11:13

thx进行更正,自从我使用facebook SDK以来已经有一段时间了,所以我没有进行检查。仍然花了他们太长时间才放在那儿。

–神盾
15年4月28日在15:16

阅读本文一年后,我仍然想知道是否应该使用Frescoe,但我仍然不知道为什么要这样做。当Glide和Picasso开箱即用时,Frescoe只是需要您做很多事情,以至于看起来不值得和大小...。

–frostymarvelous
16 Mar 2 '16 at 9:43

我想指出壁画有记忆问题:github.com/facebook/react-native/issues/8711

–法比安·泽恩德尔(Fabian Zeindl)
16年7月12日在12:56

我也经历了壁画的内存问题,不幸的是,如果需要动画gif支持,它似乎必须是壁画或滑行。同样,FWIW这里是一些其他比较详细信息的链接。

–尼克
17年2月7日在17:17

#5 楼

Glide和Picasso都不是完美的。 Glide将图像加载到内存并进行缓存的方式比Picasso更好,后者使图像加载速度更快。此外,它还有助于防止应用出现流行的OutOfMemoryError。 GIF动画加载是Glide提供的一项致命功能。无论如何,毕加索解码的图像质量都比Glide好。

我更喜欢哪一个?尽管我使用Picasso的时间很长,但我必须承认我现在更喜欢Glide。但我建议您将位图格式更改为ARGB_8888,并让Glide缓存全尺寸图像并先调整大小。其余的将对您的工作大有帮助!

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

+1对于Picasso Palette Helper。

有一篇文章讨论了Picasso vs Glide帖子

评论


优秀的文章。我现在要切换到Glide。我不曾想过比毕加索更好。 :)

–苏菲安
2015年9月18日在12:44



我看到的一个问题是Glide需要API10。这有点问题,因为我无法从我的应用中删除对API 9的支持。否则肯定是更好的方法。

–苏菲安
2015年9月18日在12:53

您能解释一下为什么要使用api 9吗?只是好奇...

–丹尼尔·戈麦斯·里科(Daniel Gomez Rico)
2015年9月18日14:31在

除非我缺少任何东西,否则它将支持所有Gingerbread版本。

–苏菲安
2015年9月18日14:36在

我认为这有点主观。但是,最好支持尽可能多的设备/版本。没有? :)

–苏菲安
2015年9月19日在15:34

#6 楼

我想与大家分享我在毕加索,Universal Image Loader和Glide中所做的基准测试:https://bit.ly/1kQs3QN

由于我正在运行的项目,壁画超出了基准测试在测试中,我们不想重构布局(由于Drawee视图)。

我建议使用Universal Image Loader,因为它具有自定义功能,内存消耗以及尺寸和方法之间的平衡。

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