要实现图片裁剪功能,可以使用 Android 系统提供的裁剪功能,也可以使用第三方库进行裁剪。

  1. 使用 Android 系统提供的裁剪功能

Android 系统提供了一个裁剪图片的 Intent,可以在 startActivityForResult() 方法中启动裁剪 Intent,并在 onActivityResult() 方法中获取裁剪后的图片。

以下是使用 Android 系统提供的裁剪功能的示例代码:

// 启动裁剪 Intent
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(uri, "image/*");
intent.putExtra("crop", "true");
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("outputX", 200);
intent.putExtra("outputY", 200);
intent.putExtra("return-data", true);
startActivityForResult(intent, REQUEST_CODE_CROP);

// 在 onActivityResult() 方法中获取裁剪后的图片
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == REQUEST_CODE_CROP && resultCode == RESULT_OK && data != null) {
        Bundle extras = data.getExtras();
        if (extras != null) {
            Bitmap image = extras.getParcelable("data");
            imageView.setImageBitmap(image);
        }
    }
}

上述代码中,uri 是要裁剪的图片的 Uri,REQUEST_CODE_CROP 是请求码,可以在 onActivityResult() 方法中用来判断是不是裁剪请求的结果。裁剪时可以设置裁剪框的比例和输出的图片大小,设置完后将裁剪后的图片以 Bitmap 的形式返回,可以在 onActivityResult() 方法中获取并显示到 ImageView 中。

  1. 使用第三方库进行裁剪

使用第三方库进行裁剪可以更加灵活和自定义裁剪框的样式和功能。常用的裁剪库有 uCrop、PhotoView、CropImageView 等。

以下是使用 uCrop 库进行图片裁剪的示例代码:

// 启动裁剪 Activity
Uri sourceUri = Uri.fromFile(new File(imagePath)); // 要裁剪的图片的 Uri
Uri destinationUri = Uri.fromFile(new File(getCacheDir(), "cropped")); // 裁剪后的图片的 Uri
UCrop.of(sourceUri, destinationUri)
        .withAspectRatio(1, 1) // 设置裁剪框的比例为 1:1
        .withMaxResultSize(500, 500) // 输出的图片的最大尺寸为 500x500
        .start(this);

// 在 onActivityResult() 方法中获取裁剪后的图片
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK && requestCode == UCrop.REQUEST_CROP) {
        Uri resultUri = UCrop.getOutput(data);
        imageView.setImageURI(resultUri);
    }
    if (resultCode == UCrop.RESULT_ERROR) {
        Throwable error = UCrop.getError(data);
        Log.e(TAG, "裁剪图片出错", error);
    }
}

上述代码中,通过调用 UCrop.of() 方法创建一个裁剪任务,设置要裁剪的图片的 Uri 和裁剪后的图片的 Uri,以及裁剪框的比例和输出的图片的最大尺寸。然后调用 start() 方法启动裁剪 Activity。在 onActivityResult() 方法中获取裁剪后的图片的 Uri,并将其显示到 ImageView 中。如果裁剪出错,则可以通过 UCrop.getError() 方法获取错误信息

在安卓开发中写一个图片裁剪的功能

原文地址: https://www.cveoy.top/t/topic/fsZA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录