Android图片裁剪——第三方开源框架Android Image Cropper的使用

因为项目中有裁剪图片这一需求,我在网上找到了Android Image Cropper,一款使用起来非常简单第三方图片裁剪框架,在此记录一下。
项目的github地址:Android Image Cropper

Android Image Cropper有两种使用方法:
1、Activity用法
(1)在app模块的build.gradle文件中添加依赖

api 'com.theartofdev.edmodo:android-image-cropper:2.8.+'

(2)在AndroidManifest.xml文件中声明所需要的权限

<!--读取SD卡-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<!--写入SD卡-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

(3)在AndroidManifest.xml文件中注册CropImageActivity

<activity
            android:name="com.theartofdev.edmodo.cropper.CropImageActivity"
            android:theme="@style/Base.Theme.AppCompat" /> <!-- optional (needed if default theme has no action bar) -->

(4)在需要裁减图片的地方启动CropImageActivity

CropImage.activity()
        .setGuidelines(CropImageView.Guidelines.ON) //开启选择器
        .setActivityTitle("头像裁剪")
        .setCropShape(CropImageView.CropShape.RECTANGLE)  //选择矩形裁剪
                        .start(UserDataActivity.this);

(5)重写onActivityResult,获取裁剪后的图片的uri:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   
        //用户没有进行有效的设置操作,返回
        if (resultCode == RESULT_CANCELED) {
            Toast.makeText(getApplication(), "取消", Toast.LENGTH_LONG).show();
            return;
        }

        switch (requestCode) {
            case CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE:{
                CropImage.ActivityResult result = CropImage.getActivityResult(data);
             
                if(resultCode==RESULT_OK){
                    final Uri resultUri = result.getUri();  //获取裁减后的图片的Uri
                  
                    saveHeadPortrait(resultUri); //我自己写的处理图片的方法

                }else if(resultCode==CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE){
                    Log.d("PhotoActivity", "onActivityResult: Error");
                    Exception exception = result.getError();
                }
                break;
            }


        super.onActivityResult(requestCode, resultCode, data);
    }

2、View用法
(1)(2)步和Activity用法一样。

(3)增加CropImageView到Activity的布局文件中

<!-- Image Cropper fill the remaining available height -->
<com.theartofdev.edmodo.cropper.CropImageView
  xmlns:custom="http://schemas.android.com/apk/res-auto"
  android:id="@+id/cropImageView"
  android:layout_width="match_parent"
  android:layout_height="0dp"
  android:layout_weight="1"/>

(4)用的时候设置图片的uri

cropImageView.setImageUriAsync(uri);
// or (prefer using uri for performance and better user experience)
cropImageView.setImageBitmap(bitmap);

(5)获取裁减后的图片

// subscribe to async event using cropImageView.setOnCropImageCompleteListener(listener)
cropImageView.getCroppedImageAsync();
// or
Bitmap cropped = cropImageView.getCroppedImage();
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
Android Image Cropper 是一个开源图片裁剪框架,它可以让你在 Android 应用中实现图片裁剪功能。使用 Android Image Cropper,你可以让用户在任何地方选择一张图片并对其进行裁剪。该框架支持手势缩放、旋转、裁剪框大小调整等功能。 Android Image Cropper 的主要功能如下: - 矩形和圆形裁剪框 - 支持手势缩放、旋转、裁剪框大小调整 - 支持设置裁剪框宽高比、最大最小裁剪框大小、裁剪结果大小等 - 支持设置裁剪结果压缩质量、格式等 - 支持自定义裁剪界面 下面是使用 Android Image Cropper 的基本步骤: 1. 在 build.gradle 文件中添加以下依赖项: ``` implementation 'com.github.yalantis:ucrop:2.2.6' ``` 2. 在你的Activity中,启动裁剪界面: ``` // 从相册中选择一张图片进行裁剪 UCrop.of(sourceUri, destinationUri) .withAspectRatio(16, 9) .withMaxResultSize(maxWidth, maxHeight) .start(this); // 或者从相机中拍照裁剪 UCrop.of(sourceUri, destinationUri) .withAspectRatio(16, 9) .withMaxResultSize(maxWidth, maxHeight) .start(this); ``` 3. 在 onActivityResult() 方法中获取裁剪结果: ``` @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == UCrop.REQUEST_CROP && resultCode == RESULT_OK) { final Uri resultUri = UCrop.getOutput(data); // 处理裁剪结果 } else if (resultCode == UCrop.RESULT_ERROR) { final Throwable cropError = UCrop.getError(data); // 处理裁剪错误 } } ``` 希望这些信息能够帮助你快速了解 Android Image Cropper
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值