毕加索,图像加载和调整大小

时间:2016-09-19 10:55:46

标签: android performance picasso

我的应用程序中有很多图像,我正在使用resize并自定义许多列表的宽度和高度,我从服务器获取所有这些图像的大尺寸图像。使用resize是一个好主意,或者我应该从服务器获取较小的图像,无论何时需要,并从毕加索电话中删除resize(),这会增加应用性能。我的主要问题是,在您的应用中使用resize会降低性能,因为它需要调整应用中每张图片的大小。

3 个答案:

答案 0 :(得分:2)

Picasso只会resize()一次图像,因为它会被缓存(特别是存储在LruCache中),除非缓存达到最大限制,缓存将删除图像以便它可以存储新的。再次访问已删除的图像将触发另一个resize()调用,但对于那些仍在缓存中的图片,Picasso将不需要执行resize()

如果您对服务器有完全控制权,那么最好能够创建具有可自定义image-size-parameter的API。假设您只需要一个缩略图,因此您只需提供图像的宽度 - 高度,而不是下载大图像,这些图像不会给缩略图带来好处,而且可以节省一些带宽。

答案 1 :(得分:1)

尝试此操作以指定图像高度和宽度

Picasso.with(mContext)
             .load(uri).resize(100, 100).centerCrop()
             .placeholder(R.drawable.type_pic)
             .error(R.drawable.type_pic)
             .into(holder.icon);

答案 2 :(得分:1)

Picasso的resize()有助于渲染表现,

但是如果实际文件大小很大,下载时间将与实际大小的下载时间相比更多。

因此,请使用服务器中已调整大小的图像,或者如果无法为每种分辨率调整图像大小,请使用这两种方法。

通过这种方式,您可以将加载时间减少到相当长的时间。