📜  圆形裁剪图像并将其保存到Android中的文件(1)

📅  最后修改于: 2023-12-03 14:50:49.917000             🧑  作者: Mango

圆形裁剪图像并将其保存到Android中的文件

在Android应用程序中,圆形裁剪图像是一个非常常见的需求。它可以用于头像、头像等等。在这里我们将介绍如何通过使用Android系统自带的CropImage工具类,将图片裁剪为圆形,并将其保存到Android设备中的文件中。

CropImage类介绍

CropImage是Android系统自带的一个工具类,它能够方便的实现图片的裁剪操作。使用CropImage裁剪图片可以避免一些繁琐的细节操作,例如计算裁剪区域大小、对裁剪区域进行处理等等。

实现步骤

步骤1:导入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;

步骤2:设置裁剪参数

在我们进行图片裁剪之前,我们需要为它设置一些裁剪参数,例如:

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()设置了裁剪成正方形。

步骤3:接收结果并处理

当我们裁剪完成之后,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开发者。