当前位置: 首页 > 工具软件 > Image Cropper > 使用案例 >

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

微生旻
2023-12-01

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

项目的github地址:https://github.com/ArthurHub/Android-Image-Cropper

效果图如下

Android Image Cropper有两种使用方法:

1、Activity用法

(1)在app模块的build.gradle文件中添加依赖

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

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

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

android:name="com.theartofdev.edmodo.cropper.CropImageActivity"android:theme="@style/Base.Theme.AppCompat" />

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

CropImage.activity()

.setGuidelines(CropImageView.Guidelines.ON)//开启选择器

.setActivityTitle("头像裁剪")

.setCropShape(CropImageView.CropShape.RECTANGLE)//选择矩形裁剪

.start(UserDataActivity.this);

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

@Overrideprotected void onActivityResult(int requestCode, intresultCode, Intent data) {//用户没有进行有效的设置操作,返回

if (resultCode ==RESULT_CANCELED) {

Toast.makeText(getApplication(),"取消", Toast.LENGTH_LONG).show();return;

}switch(requestCode) {caseCropImage.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的布局文件中

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();

 类似资料: