uCrop图片裁剪开源库使用总结

开源项目地址:https://github.com/Yalantis/uCrop

效果图:

uCrop图片裁剪开源库使用总结_第1张图片

配置uCrop裁剪参数

1.预设置裁剪框的尺寸:

1.1. 设置为何图片原始宽高比列一样

 uCrop = uCrop.useSourceImageAspectRatio();

1.2. 动态的设置图片的宽高比,这里设置为1:1

 uCrop = uCrop.withAspectRatio(1, 1);

2.设置裁剪出来图片的格式:

  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)

3.设置裁剪图片的质量(0到100):

  UCrop.Options options = new UCrop.Options();
  //开始设置
  options.setCompressionQuality(mSeekBarQuality.getProgress());
  //结束设置
  uCrop.withOptions(options)

4.设置裁剪图片的手势操作开关:

  UCrop.Options options = new UCrop.Options();
  //开始设置
  //一共三个参数,分别对应裁剪功能页面的“缩放”,“旋转”,“裁剪”界面,对应的传入NONE,就表示关闭了其手势操作,比如这里我关闭了缩放和旋转界面的手势,只留了裁剪页面的手势操作
  options.setAllowedGestures(UCropActivity.NONE, UCropActivity.NONE, UCropActivity.ALL);
  //结束设置
  uCrop.withOptions(options)

5.设置将被载入裁剪图片的最大尺寸:

  UCrop.Options options = new UCrop.Options();
  //开始设置
  //设置裁剪图片的最大尺寸
  options.setMaxBitmapSize(100);
  //结束设置
  uCrop.withOptions(options)

6.一些其他设置:

  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)

开始使用uCrop

//originUri--原始图片的Uri;
//mDestinationUri--目标裁剪的图片保存的Uri
mDestinationUri = Uri.fromFile(new File(getCacheDir(), "SampleCropImage.jpeg"));
UCrop uCrop = UCrop.of(originUri, mDestinationUri);
//开始设置
//在这里用刚才上面的参数设置api自定义一些属性
//结束设置
uCrop.start(SampleActivity.this);

另外,需要在AndroidManifest.xml中配置一下:

 <activity
     android:name="com.yalantis.ucrop.UCropActivity"
     android:screenOrientation="portrait"/>

uCrop裁剪结果获取

 @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);
        }
    }

你可能感兴趣的:(Android)