如何在Android中更快地下载图片,使用Volley / Picasso / Glide或其他工具?

6

我正在开发一个项目,需要从服务器下载一些图片。 我已经尝试了以下3种方法。

Picasso:

Picasso.with(context).load(image).into(holder.image);

Glide:
Glide.with(context).load(image).into(holder.image);

Volley:

imageLoader.get(image, new ImageLoader.ImageListener() {
        @Override
        public void onResponse(ImageLoader.ImageContainer response, boolean isImmediate) {
            holder.image.setImageBitmap(response.getBitmap());
        }

        @Override
        public void onErrorResponse(VolleyError error) {

        }
    });

毫无疑问,所有这些方法在快速的互联网连接下运作得非常好。但是,在2G网络下下载20KB-25KB大小的图像需要太长时间。我已经尝试了调整图像大小等所有方法,但是没有从中获得良好的结果。我看到了像Amazon或Flipkart或任何电子商务应用程序这样的应用程序,在慢速互联网连接下工作得非常好,并以良好的分辨率下载所有图像。因此,我希望能够得到一些关于这些问题的专家解决方案。

你可以尝试使用fresco - Kaushik
如果您第一次使用此库,它需要时间来下载图像,之后它会自动从缓存中加载图像,因此显示图像更快。 - Rajesh Jadav
请查看 https://dev59.com/SF0b5IYBdhLWcg3wSPqL,您可以尝试使用Fresco。 - Rajesh Jadav
如果你比较这三个库,我认为Glide是最好的。Glide支持获取、解码和显示视频截图、图片和动态GIF。而且至少比Picasso更快。 - Umer
3个回答

2
Glide和Picasso只是从服务器获取图像并显示它们。如果您的网络速度较慢,则图像加载需要更长时间。您需要在服务器端重新调整图像大小。使用WebP格式而不是JPEG或PNG将有助于减小大小而不降低质量。
注意:您可以使用Thumbor轻松实现此操作。

谢谢。我会尝试这个。我还有一个电子商务项目。目前,这个项目只有20张图片,所以更改所有这些的格式对我来说很容易。但是,在电子商务中,它有大约1万个产品。我无法更改所有这些图像的格式。那么在这种情况下该怎么办呢? - chirag patel

0
如果您需要在某个点击事件中下载单个图像并将其保存到SD卡,则Android的DownLoadManager类是完美且易于使用的解决方案。或者,如果您想从Web中显示大量图像,则Universal Image Loader与Volley和Picasso一样有用。为了更快地下载图像,您必须减小它们的大小。在服务器端使用WebP格式而不是Jpeg或PNG。

0

如果不需要缓存并且直接从网络下载,则Picasso是一个不错的选择。如果需要缓存,则使用AQuery来处理图片(或大型图片)。在AQuery中有多种缓存选项。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接