我的应用程序中有很多图像,我正在使用resize
并自定义许多列表的宽度和高度,我从服务器获取所有这些图像的大尺寸图像。使用resize
是一个好主意,或者我应该从服务器获取较小的图像,无论何时需要,并从毕加索电话中删除resize()
,这会增加应用性能。我的主要问题是,在您的应用中使用resize
会降低性能,因为它需要调整应用中每张图片的大小。
答案 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()有助于渲染表现,
但是如果实际文件大小很大,下载时间将与实际大小的下载时间相比更多。
因此,请使用服务器中已调整大小的图像,或者如果无法为每种分辨率调整图像大小,请使用这两种方法。
通过这种方式,您可以将加载时间减少到相当长的时间。