Android: 如何使用 Picasso 裁剪图像?
Android: How to crop an image using Picasso?
我想使用 Android 的毕加索图像库来裁剪图像 – 而不是调整图像大小。
更具体地说,我想加载一张图片,然后截取它的一个矩形,坐标为 (x,y)
,宽度为 w
,高度为 h
:
Original Image
------------------------------
| |
| (x,y) |
| ------------ |
| | | |
| | Cropped | |
| | Image | h |
| | | |
| | | |
| ------------ |
| w |
------------------------------
然后,我想将原始图像的这个矩形块加载到ImageView
中。我怎么做?
您可以为此使用 Picasso 的变换函数。它允许您通过自己的方法对 Bitmap
可绘制对象进行所需的更改:
Picasso.with(getContext())
.load(R.drawable.sample) // the image you want to load
.transform(new Transformation() {
@Override
public Bitmap transform(Bitmap source) {
Bitmap result = Bitmap.createBitmap(source,x,y,w,h); // the actual cropping
source.recycle(); // recycle the source bitmap to avoid memory problems
return result;
}
@Override
public String key() {
return x+","+y+","+w+","+h; // some id unique for the transformation you do
}
})
.into(findViewById(R.id.yourImageView); // load the cropped image into your image view
我想使用 Android 的毕加索图像库来裁剪图像 – 而不是调整图像大小。
更具体地说,我想加载一张图片,然后截取它的一个矩形,坐标为 (x,y)
,宽度为 w
,高度为 h
:
Original Image
------------------------------
| |
| (x,y) |
| ------------ |
| | | |
| | Cropped | |
| | Image | h |
| | | |
| | | |
| ------------ |
| w |
------------------------------
然后,我想将原始图像的这个矩形块加载到ImageView
中。我怎么做?
您可以为此使用 Picasso 的变换函数。它允许您通过自己的方法对 Bitmap
可绘制对象进行所需的更改:
Picasso.with(getContext())
.load(R.drawable.sample) // the image you want to load
.transform(new Transformation() {
@Override
public Bitmap transform(Bitmap source) {
Bitmap result = Bitmap.createBitmap(source,x,y,w,h); // the actual cropping
source.recycle(); // recycle the source bitmap to avoid memory problems
return result;
}
@Override
public String key() {
return x+","+y+","+w+","+h; // some id unique for the transformation you do
}
})
.into(findViewById(R.id.yourImageView); // load the cropped image into your image view