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

Ucrop剪裁框架的简单实用

公孙新觉
2023-12-01
  • build.gradle
  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);
    }

  • Activity 中 onActivityResult 接收剪切后的结果数据
   switch (requestCode) {
            /***
             * 从本地选择图片
             */
            case 100:
                startPhotoCrop(data.getData());
                break;
            /**
             * 拍照
             */
            case 200:
                startPhotoCrop(outputFileUri);
                break;

            case UCrop.REQUEST_CROP:
                requestCrop(data);
                break;
        }
  • requestCrop函数实现
/**
     * 最终结果
     *
     * @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);
        }
    }

 类似资料: