implementation 'com.github.yalantis:ucrop:2.2.2'
Activity中的简单实用列子:
/**
* 使用Ucrop框架剪裁
*
* @param uri
*/
public void startPhotoCrop(Uri uri){
UCrop.Options options = new UCrop.Options();
//裁剪后图片保存在文件夹中
Uri destinationUri = Uri.fromFile(new File(getExternalCacheDir(), "uCrop.jpg"));
UCrop uCrop = UCrop.of(uri, destinationUri);//第一个参数是裁剪前的uri,第二个参数是裁剪后的uri
uCrop.withAspectRatio(1,1);//设置裁剪框的宽高比例
//下面参数分别是缩放,旋转,裁剪框的比例
options.setAllowedGestures(UCropActivity.ALL,UCropActivity.NONE,UCropActivity.ALL);
options.setToolbarTitle("移动和缩放");//设置标题栏文字
options.setCropGridStrokeWidth(2);//设置裁剪网格线的宽度(我这网格设置不显示,所以没效果)
options.setCropFrameStrokeWidth(2);//设置裁剪框的宽度
options.setMaxScaleMultiplier(3);//设置最大缩放比例
options.setHideBottomControls(false);//隐藏下边控制栏
options.setShowCropGrid(true); //设置是否显示裁剪网格
// options.setOvalDimmedLayer(true);//设置是否为圆形裁剪框
options.setShowCropFrame(true); //设置是否显示裁剪边框(true为方形边框)
options.setToolbarWidgetColor(Color.parseColor("#ffffff"));//标题字的颜色以及按钮颜色
options.setDimmedLayerColor(Color.parseColor("#AA000000"));//设置裁剪外颜色
options.setToolbarColor(Color.parseColor("#000000")); // 设置标题栏颜色
options.setStatusBarColor(Color.parseColor("#000000"));//设置状态栏颜色
options.setCropGridColor(Color.YELLOW);//设置裁剪网格的颜色
options.setCropFrameColor(Color.YELLOW);//设置裁剪框的颜色
uCrop.withOptions(options);
uCrop.start(this);
}
switch (requestCode) {
/***
* 从本地选择图片
*/
case 100:
startPhotoCrop(data.getData());
break;
/**
* 拍照
*/
case 200:
startPhotoCrop(outputFileUri);
break;
case UCrop.REQUEST_CROP:
requestCrop(data);
break;
}
/**
* 最终结果
*
* @param data
*/
private void requestCrop(Intent data) {
final Uri resultUri = UCrop.getOutput(data);
String filePath=getRealFilePath(this,resultUri);
Log.v("====filePath======","filePath="+filePath);
if(type==0){
postFileTask(filePath,1);
InputStream input = null;
try {
input = this.getContentResolver().openInputStream(resultUri);
Bitmap bitmap = BitmapFactory.decodeStream(input);
img_head.setImageBitmap(bitmap);
input.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}else {
postFileTask(filePath,3);
}
}