我如何使用毕加索将图像裁剪为图像视图?
默认似乎是缩小它所以整个事情显示 适合似乎伸展它。 centercrop本身就打破了。 fit centercrop似乎与fit fit相同
由于
答案 0 :(得分:8)
尝试使用centerCrop()
Picasso.with(mContext)
.load(url)
.centerCrop()
.resize(yourImageView.getMeasuredWidth(),yourImageView.getMeasuredHeight())
.error(R.drawable.error)
.placeholder(R.drawable.blank_img)
.into(yourImageView);
您必须添加addOnPreDrawListener
侦听器,否则在未绘制imageview时,您将获得0的宽度和高度。有关如何使用addOnPreDrawListener
的详细信息,请转到here。
答案 1 :(得分:4)
CenterCrop()
是一种裁剪技术,可以缩放图像,使其填充ImageView
的请求范围,然后裁剪额外的。 ImageView
将完全填充,但可能无法显示整个图像。
Picasso
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[0])
.resize(600, 200) // resizes the image to these dimensions (in pixel)
.centerCrop()
.into(imageViewResizeCenterCrop);
CenterInside()
是一种裁剪技术,可以缩放图像,使两个维度都等于或小于ImageView
的请求范围。图像将完全显示,但可能无法填满整个ImageView
。
Picasso
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[0])
.resize(600, 200)
.centerInside()
.into(imageViewResizeCenterInside);
讨论的选项应涵盖您对图像大小调整和缩放功能的需求。 Picasso有一个最后的辅助功能,它非常有用:fit()
。
Picasso
.with(context)
.load(UsageExampleListViewAdapter.eatFoodyImages[0])
.fit()
// call .centerInside() or .centerCrop() to avoid a stretched image
.into(imageViewFit);
答案 2 :(得分:3)
您必须在调用centerCrop或centerInside()方法之前调用resize,否则Picasso会抱怨目标宽度/高度为0。
public class MainActivity extends Activity {
ImageView imageView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = (ImageView) findViewById(R.id.imageView);
}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
if (hasFocus) {
Picasso.with(this)
.load("http://i.imgur.com/removed.png")
.resize(imageView.getMeasuredWidth(), imageView.getMeasuredHeight())
.centerCrop() // or centerInside()
.into(imageView);
}
super.onWindowFocusChanged(hasFocus);
}
}
这是在布局中定义的imageView:
<ImageView
android:layout_width="160dp"
android:layout_height="160dp"
android:id="@+id/imageView"
/>