我有一个相当高分辨率的图像,我从远程URL获取并使用Picasso缩小。我意识到在某些分辨率下我会在屏幕上显示像素化图像。
有趣的是,如果我在Picasso中提高图像的分辨率并允许ImageView将其缩小,我就不会从图像的较低分辨率版本中获得锯齿状边缘。
我的第一个想法是,在毕加索的inSampleSize
计算中可能会发生一些欠采样,这里:
https://github.com/square/picasso/blob/master/picasso/src/main/java/com/squareup/picasso/RequestHandler.java#L155
有没有办法覆盖inSampleSize以防止Picasso给我一张分辨率较低的图片?我见过这样的实现:https://stackoverflow.com/a/4250279 inSampleSize
为2的幂,应该是。
这是我的基本实现: (导致像素化图像)
public class myClass extends ImageView {
...
RequestCreator mRequestCreator = Picasso.load(photoUrl);
mRequestCreator.fit().into(this);
}
这导致非像素化图像:
public class myClass extends ImageView {
...
RequestCreator mRequestCreator = Picasso.load(photoUrl);
mRequestCreator.resize(getWidth()*2, getHeight()*2);
mRequestCreator.into(this);
this.setScaleType(CENTER_CROP)
}