📅  最后修改于: 2023-12-03 14:50:49.917000             🧑  作者: Mango
在Android应用程序中,圆形裁剪图像是一个非常常见的需求。它可以用于头像、头像等等。在这里我们将介绍如何通过使用Android系统自带的CropImage工具类,将图片裁剪为圆形,并将其保存到Android设备中的文件中。
CropImage是Android系统自带的一个工具类,它能够方便的实现图片的裁剪操作。使用CropImage裁剪图片可以避免一些繁琐的细节操作,例如计算裁剪区域大小、对裁剪区域进行处理等等。
CropImage工具类是系统自带的,所以我们不需要额外去下载。只需要在Java类中导入以下语句即可:
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.widget.ImageView;
import androidx.annotation.Nullable;
import com.android.crop.Crop;
在我们进行图片裁剪之前,我们需要为它设置一些裁剪参数,例如:
private void startCrop(@NonNull Uri uri) {
String destinationFileName = SAMPLE_CROPPED_IMAGE_NAME + ".png";
Crop.of(uri, Uri.fromFile(new File(getCacheDir(), destinationFileName)))
.asSquare()
.start(this);
}
其中,我们通过Crop.of()
方法设置了原始图片的Uri和裁剪后图片保存的Uri。.asSquare()
设置了裁剪成正方形。
当我们裁剪完成之后,CropImage会回调onActivityResult()
方法。在这个方法中,我们可以获取到裁剪后的图片,并且将它保存到设备的文件中。
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == Crop.REQUEST_CROP && resultCode == RESULT_OK) {
Uri croppedUri = Crop.getOutput(data);
imageView.setImageURI(croppedUri);
// Save cropped image to file
Bitmap bitmap = null;
try {
bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), croppedUri);
saveImage(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
}
}
private void saveImage(Bitmap bitmap) throws IOException {
File file = new File(getExternalFilesDir(null), "profile.png");
OutputStream os = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 90, os);
os.flush();
os.close();
}
在这里,我们通过Crop.getOutput()
方法获取到了裁剪后的图片Uri,然后使用MediaStore.Images.Media.getBitmap()
方法将Uri转换为Bitmap对象。最后,我们将Bitmap保存到文件中。
通过使用CropImage工具类,我们可以轻松地实现图片裁剪的需求,同时也方便了图片的处理操作。希望通过这篇文章的介绍能够帮助到广大Android开发者。