开源项目地址:https://github.com/Yalantis/uCrop
1.1. 设置为何图片原始宽高比列一样
uCrop = uCrop.useSourceImageAspectRatio();
1.2. 动态的设置图片的宽高比,这里设置为1:1
uCrop = uCrop.withAspectRatio(1, 1);
UCrop.Options options = new UCrop.Options();
//开始设置
options.setCompressionFormat(Bitmap.CompressFormat.WEBP);
or
options.setCompressionFormat(Bitmap.CompressFormat.JPEG);
or
options.setCompressionFormat(Bitmap.CompressFormat.PNG);
//结束设置
uCrop.withOptions(options)
UCrop.Options options = new UCrop.Options();
//开始设置
options.setCompressionQuality(mSeekBarQuality.getProgress());
//结束设置
uCrop.withOptions(options)
UCrop.Options options = new UCrop.Options();
//开始设置
//一共三个参数,分别对应裁剪功能页面的“缩放”,“旋转”,“裁剪”界面,对应的传入NONE,就表示关闭了其手势操作,比如这里我关闭了缩放和旋转界面的手势,只留了裁剪页面的手势操作
options.setAllowedGestures(UCropActivity.NONE, UCropActivity.NONE, UCropActivity.ALL);
//结束设置
uCrop.withOptions(options)
UCrop.Options options = new UCrop.Options();
//开始设置
//设置裁剪图片的最大尺寸
options.setMaxBitmapSize(100);
//结束设置
uCrop.withOptions(options)
UCrop.Options options = new UCrop.Options();
//开始设置
//设置最大缩放比例
options.setMaxScaleMultiplier(5);
//设置图片在切换比例时的动画
options.setImageToCropBoundsAnimDuration(666);
//设置裁剪窗口是否为椭圆
options.setOvalDimmedLayer(true);
//设置是否展示矩形裁剪框
options.setShowCropFrame(false);
//设置裁剪框横竖线的宽度
options.setCropGridStrokeWidth(20);
//设置裁剪框横竖线的颜色
options.setCropGridColor(Color.GREEN);
//设置竖线的数量
options.setCropGridColumnCount(2);
//设置横线的数量
options.setCropGridRowCount(1);
//结束设置
uCrop.withOptions(options)
//originUri--原始图片的Uri;
//mDestinationUri--目标裁剪的图片保存的Uri
mDestinationUri = Uri.fromFile(new File(getCacheDir(), "SampleCropImage.jpeg"));
UCrop uCrop = UCrop.of(originUri, mDestinationUri);
//开始设置
//在这里用刚才上面的参数设置api自定义一些属性
//结束设置
uCrop.start(SampleActivity.this);
<activity
android:name="com.yalantis.ucrop.UCropActivity"
android:screenOrientation="portrait"/>
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
if (requestCode == UCrop.REQUEST_CROP) {
final Uri resultUri = UCrop.getOutput(result);
if (resultUri != null) {
ResultActivity.startWithUri(SampleActivity.this,resultUri);
} else {
Toast.makeText(SampleActivity.this, R.string.toast_cannot_retrieve_cropped_image, Toast.LENGTH_SHORT).show();
}
}
}
if (resultCode == UCrop.RESULT_ERROR) {
handleCropError(data);
}
}