照片系列之android裁剪图片

权限处理

有关权限的处理,上一篇博客已经写到了,这里就不放出来了

链接: 照片系列之android调用照片库获取图片.

裁剪照片

这里的裁剪图片既可以是给定的路径,也可以是调用相册之后返回的Uri。

这个是点击裁剪按钮调用的方法,第一个参数是一个意图,第二个参数是回调时用来识别的code

//裁剪指定路径的图片(不论是刚拍照完的还是从相册中取到的,只要拿到uri或者String类型的路径都可以进行裁剪)
startActivityForResult(CutForPhoto(stringToUri(Environment.getExternalStorageDirectory() + "/Pictures/"+"123.jpg")), CUT_PHOTO2);

裁剪图片

 @NonNull
    private Intent CutForPhoto(Uri uri) {
        try {
            //直接裁剪
            Intent intent = new Intent("com.android.camera.action.CROP");
            //设置裁剪之后的图片路径文件
            File cutfile = new File(Environment.getExternalStorageDirectory().getPath(),
                    "cutcamera.jpg"); //随便命名一个
            if (cutfile.exists()){ //如果已经存在,则先删除,这里应该是上传到服务器,然后再删除本地的,没服务器,只能这样了
                cutfile.delete();
            }
            cutfile.createNewFile();
            //初始化 uri
            Uri imageUri = uri; //返回来的 uri
            Uri outputUri = null; //真实的 uri
            outputUri = Uri.fromFile(cutfile);

            // crop为true是设置在开启的intent中设置显示的view可以剪裁
            intent.putExtra("crop",true);
            // aspectX,aspectY 是宽高的比例,这里设置正方形
            //String sss= android.os.Build.MODEL;
            if(android.os.Build.MODEL.contains("EDI-AL10")||android.os.Build.MODEL.contains("HUAWEI"))
            {//华为特殊处理 不然会显示圆
                intent.putExtra("aspectX", 9998);
                intent.putExtra("aspectY", 9999);
            }
            else
            {
                intent.putExtra("aspectX", 1);
                intent.putExtra("aspectY", 1);
            }
            //设置要裁剪的宽高
            intent.putExtra("outputX", 300); //200dp
            intent.putExtra("outputY",300);
            intent.putExtra("scale",true);
            //如果图片过大,会导致oom,这里设置为false
            intent.putExtra("return-data",false);
            if (imageUri != null) {
                intent.setDataAndType(imageUri, "image/*");
            }
            if (outputUri != null) {
                intent.putExtra(MediaStore.EXTRA_OUTPUT, outputUri);
            }
            intent.putExtra("noFaceDetection", true);
            //压缩图片
            intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
            return intent;
        } catch (IOException e) {
            e.toString();
            e.printStackTrace();
        }
        return null;
    }

不同的手机系统裁剪是不同的,这个裁剪进行了兼容,设置的是正方形的裁剪。这个方法需要传入一个Uri

将路径转化成Uri

这里面做了版本兼容,兼容7.0android系统

private Uri stringToUri(String path){
        Uri uri = null;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
             //如果是7.0android系统
            ContentValues contentValues = new ContentValues(1);
            contentValues.put(MediaStore.Images.Media.DATA,path);
            uri=getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,contentValues);
        }else{
            uri = Uri.fromFile(new File(path));
        }
        return uri;
    }
在PyCharm中修改镜像源有两种方法可以选择。第一种方法是通过点击PyCharm界面上的"File"菜单,然后选择"Settings"选项。在弹出的窗口中,搜索并点击"Project Interpreter"选项。接下来,在右侧的窗口中,可以看到已安装的包列表。点击任意一个包的名称,然后选择"Manage Repositories"选项。在弹出的界面中,点击右上角的加号按钮,然后添加国内镜像源的URL,例如清华镜像源(https://pypi.tuna.tsinghua.edu.cn/simple)或阿里云镜像源(http://mirrors.aliyun.com/pypi/simple/)或中国科技大学镜像源(https://pypi.mirrors.ustc.edu.cn/simple/)。保存设置后,PyCharm将使用新的镜像源进行包的下载和安装。\[1\]\[3\] 第二种方法是通过点击PyCharm界面上的"Settings"按钮,然后搜索并点击"Project Interpreter"选项。在右侧的窗口中,可以看到已安装的包列表。点击右上角的加号按钮,然后添加国内镜像源的URL,例如清华镜像源(https://pypi.tuna.tsinghua.edu.cn/simple)或阿里云镜像源(http://mirrors.aliyun.com/pypi/simple/)或中国科技大学镜像源(https://pypi.mirrors.ustc.edu.cn/simple/)。保存设置后,PyCharm将使用新的镜像源进行包的下载和安装。\[2\]\[3\] #### 引用[.reference_title] - *1* [如何在pycharm中更改成国内镜像](https://blog.csdn.net/qq_51136340/article/details/120316266)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [pycharm修改镜像源方法](https://blog.csdn.net/selfimpro_001/article/details/88670584)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值