android使用原生剪裁的配置
/***
*@paramuri==null 表示为相机拍摄
*@paramaspectX裁剪框X比例,默认1
*@paramaspectY裁剪框X比例,默认1
*@paramoutputX裁剪后输出图片的x
*@paramoutputY裁剪后输出图片的y
*/
public voidcrop(Activity activity,Uri uri,intaspectX,floataspectY, intoutputX,intoutputY) {
Uri mUri = uri ==null? Uri.fromFile(getTempFile()) : uri;
// 裁剪图片意图
Intent intent =newIntent("com.android.camera.action.CROP");
intent.setDataAndType(mUri,"image/*");
intent.putExtra("crop","true");
// 裁剪框的比例,1:1
intent.putExtra("aspectX",aspectX);
intent.putExtra("aspectY",aspectY);
// 裁剪后输出图片的尺寸大小
intent.putExtra("outputX",outputX);
intent.putExtra("outputY",outputY);
//设置剪切的图片保存位置
intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.parse(cropUrl));
intent.putExtra("outputFormat","JPEG");// 图片格式
intent.putExtra("noFaceDetection", true);// 取消人脸识别
intent.putExtra("return-data", false);
// 开启一个带有返回值的Activity,请求码为PHOTO_REQUEST_CUT
activity.startActivityForResult(intent,PHOTO_REQUEST_CUT);
tempFile=newFile(Environment.getExternalStorageDirectory(),cropUrl);
}
调用该方法进行图片剪裁,把图片保存在本地,在activty的onActivityResult中通过
bitmap=BitmapFactory.decodeStream(getApplicationContext().getContentResolver().openInputStream(Uri.parse(PhotoDialog.cropUrl)));
获取到bitmap对象,使用完后调用
tempFile=newFile(Environment.getExternalStorageDirectory(),cropUrl);
tempFile.delete();
删除