Picasso 图片缩放

通过resize(x,y)改变大小

通常来说,你的服务器或API交付的图片都是根据带宽、内存消耗和图片质量计算出的你需要的最合适的大小。不幸的是,并不是每次请求图片时得到的都是最佳比例。如果图片的比例不是想要的,可以使用resize(horizontalSize, verticalSize)去修改图片的尺寸。
String internetUrl = "http://i.imgur.com/DvpvklR.png";
Picasso
  .with(this)
  .load(internetUrl)
  .resize(400,200)
  .into(imageView);

scaleDown()的使用

使用resize()方法Picasso也可以放大图片,但是在不提高图片质量的前提下仅仅放大图片只是会浪费处理的时间而已,调用scaleDown(true)只有当原图比目标更大时才去请求resize()。
Picasso
  .with(this)
  .load(eatFoodyImages[2])
  .resize(6000, 2000)
  .onlyScaleDown()
  .into(imageView);

缩放时回避拉伸

当我们操作图片时,图片可能会比例失真。大多数情况下,你都会想去防止这种情况发生。Picasso提供了两种解决的方法:调用centerCrop()或centerInside()。

CenterCrop

centerCrop()使用了一种裁剪技术去缩放图片,去填充ImageView的界限,然后裁剪掉多余的部分。使用这个方法会使ImageView会被填充的很合适,但是图片可能不能完全显示出来。
Picasso
    .with(this)
    .load(eatFoodyImages[0])
    .resize(600, 200)
    .centerCrop()
    .into(imageView);

CenterInside

centerInside()也是一种裁剪技术,缩放时图片的宽和高同时等于或小于设定的ImageView的边界。图片会被完全显示出来,但是也许不能完全填充ImageView。
Picasso
    .with(this)
    .load(eatFoodyImages[0])
    .resize(600, 200)
    .centerInside()
    .into(imageView);

fit()

前面介绍的功能以及可以基本解决你的缩放需求了,这里还有一个功能会非常有用:fit()。
Picasso
    .with(this)
    .load(eatFoodyImages[3])
    .fit()
    .into(imageView);
fit()回去测量ImageView的宽高,并且在内部使用resize(),从而缩小图片的尺寸去适配ImageView。关于fit()有两点必须知道:首先,调用fit()会延时图片请求,因为Picasso需要等待直到ImageView的尺寸被测量完毕;其次,只可以使用一个ImageView做完fit的目标(稍后我们会看看其他目标)。
优势是图片使用的是最低的分辨率,不会受到图片质量的影响。更低的分辨率意味着需要占用更少的缓存。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值