当前位置: 首页 > 知识库问答 >
问题:

哪个提供了更好的图像加载/缓存-凌空或毕加索?

杨飞飙
2023-03-14

我正在寻找一个开源的图像加载/缓存解决方案。

我希望:

谷歌的凌空抽射,

方的毕加索

通用图像加载器

我希望能够处理来自磁盘和网络的异步图像加载,但是我不确定Google的volley句柄是否从磁盘加载。

Volley允许从磁盘加载资源吗??

AQuery提供了我想做的事情的一个示例。

共有3个答案

劳灵均
2023-03-14

volley的请求类处理所有网络请求。我还没有找到任何从磁盘加载资源的类。。

晏鸿畅
2023-03-14

我从http://blog.bignerdranch.com/3177-solving-the-android-image-loading-problem-volley-vs-picasso/收集了一些重要信息(旧的ver Picasso 2.0 vs volley的对比)

毕加索完全专注于图像加载。因此,如果您在图像加载过程中有怪癖

另一方面,Volley完全专注于处理单个的小型HTTP请求。因此,如果您的HTTP请求处理有一些怪癖,那么Volley可能会为您提供一个钩子。另一方面,如果您在图像处理方面有一个怪癖,那么唯一真正的钩子就是ImageCache。这不是什么,但也不是很多。但它还有其他更多优点,比如一旦定义了请求,就可以在片段或活动中轻松使用它们。与并行异步任务不同

毕加索只做一件事,而Volley试图解决一个更普遍的问题。

Android根本不能很好地处理高分辨率图像。我对在Android应用程序中捕获OutOfMemoryError的模式有点痴迷。这似乎是一个荒谬的策略,但与毕加索的缩放和正确拟合大图像相比,Volley是可靠处理某些图像场景的唯一方法。毕加索不尊重ImageViews上的caleType属性(不确定它在最新版本中是否已修复)。

测试示例:我发现,与毕加索版本相比,Volley在加载原始分辨率图像而不是缩略图版本时捕捉到OutOfMemoryError(它也捕捉到OutOfMemoryError),但毕加索无法加载任何过大的图像。凌空不仅没有爆炸,而且凌空显示了所有这些大图像!!!。

据Android黑客Koushik Dutta称:

测试所有Android镜像和http库

自从上周发布了一些图片加载和http请求库以来,我一直在测试和基准测试各种可用的图片加载和http请求库。

阵容:

  • AndroidAsync URLMageViewHelper(koush)

都支持缓存和有条件缓存的响应,保持活跃等。

思想:

  • 毕加索有最好的图像API。我将为我未来/当前的东西窃取他们的currying API风格。毕加索显然也是最慢的。尤其是3g和wifi。可能是因为他们的自定义okhttp客户端
  • UrlImageViewHelper AndroidAsync是最快的。然而,通过使用这两个强大的库,我们可以发现图像API已经过时了
  • 凌空抽射很流畅;我真的很喜欢他们的可插拔后端传输,可能最终会把AndroidAsync放在那里。请求优先级和取消管理非常好

更新这些不是真正的超文本传输协议库。只是图像加载器。但是评论中有比较请求...Android-通用-图像加载器是目前最流行的。高度可定制。

AQuery;就像jQuery一样,但是对于Android呢?我想如果你喜欢这种东西,那就太好了。不过不要使用这个;它会在UI线程或其他东西上拉屎。在列表视图中加载我的Nexus 4上的一堆图像让我看起来好像又回到了我的HTC G1上。主要口吃。

缓存清除的测试:

寒冷是新鲜的应用程序开始。Warm缓存清除,http连接可能保持活动状态。

冷/热(毫秒,平均10次运行,每次运行清除数据):

  • 毕加索12142/11892
  • URL图像7378/4525
  • 凌空8292/7520
  • Android通用图像加载器14484/11243
  • AQuery 11341/9637(这一个似乎锁定了UI线程…不要使用它)

这是测试代码库:https://github.com/koush/AndroidNetworkBench

结论:这些测试很难说是决定性的。我只是用许多图像测试了并发网络访问。诚然,测试库的意义远不止这些。例如,我喜欢Volley如何很好地处理Active生命周期。没有其他库这样做。

所以,无论什么真正让你的船漂浮起来。我(库什)想要用毕加索的API截击。

闻人宏盛
2023-03-14

如果你不介意更新/不太稳定的软件,我刚刚发布了一个名为Glide:https://github.com/bumptech/glide的开源库

它旨在允许您有效地加载任何可以获得InputStream的图像。它包括一些基本的超文本传输协议/文件加载实现,但也允许您插入自己的或通过回调使用一些外部库(如Volley)。

它包括内存和磁盘缓存,以及新设备上的位图回收。您所需要做的就是实现一个接口,为您的数据模型(路径/url/uri等)获取输入流,并将其与您想要滑动单例的任何转换、占位符或动画一起传递。

很高兴与您或任何好奇的人交谈,我们在Bump中广泛使用了它来与各种库进行交互。

 类似资料:
  • 我有一个从服务器加载映像的项目。我这样用毕加索, 多谢了。

  • 我正在使用毕加索在一个回收视图中显示许多小的ImageViews。当我单击ImageViews时,ImageViews将其图像更改500毫秒,并在500毫秒的处理程序结束时将其更改回来。 这是代码: 我使用毕加索来防止我的应用程序出现内存崩溃。图像消失大约10毫秒,然后改变到另一个图像,在500毫秒后,它再次消失,然后改变回默认图像。它只是在我第一次点击其中的一个图像的时候才会让人失望,之后它就不

  • 我正在使用毕加索图书馆。我知道,如果我将图片从URL加载到图像视图中,有一种回调方法。但我不想加载到imageview中。相反,我想将其另存为位图。所以我用了下面的代码 我怎样才能得到一个回调方法,知道我的图像是成功下载使用毕加索? 不要说位图对象的空检查。这会导致错误。

  • 我面临毕加索无法快速加载图像的问题。 有3个显示左、中、右图像。在快进/后退时,对于给定的时间点,选择左、中、右并显示在三个框中。 这是初始化。缓存是100MB以及99MB的 窗口移动的图像数是3000。所以我将图像预加载为 平均图像大小为10KB-320x180,因此达到35MB,小于99MB。 当快速循环工作时,许多图像是(来自)和(来自),但在几个快速循环之后,3个图像冻结或变得非常慢。此时

  • 4.使用自定义适配器在ListView中显示图像。 我只是对步骤1和2有问题。我可以从服务器获取新闻,并在我的ListView中显示它们 并通过在我的适配器中添加以下代码显示缓存中的图像:

  • 我正试图使用GridView毕加索\通用图像加载器制作一个画廊,我遇到了一些问题。每次我只加载本地文件(从外部存储),而不是从web。我制作了两个视频,更好地描述了问题,然后是文字。 我使用自定义适配器扩展BaseAdapter。 是带有图像的数组 加载图像速度足够快,但滚动速度非常慢。这是youtube上的视频演示 滚动速度快,但加载速度慢。此外,当你快速滚动时,你可以看到错误的图像,这些图像将