android调用系统裁剪图片 返回模糊 不清晰的问题

基本这个功能都是在头像设置的时候会用到

Android 从相机拍完照片 然后跳去系统自带的裁剪 或者从相册选取图片裁剪  然后把裁剪好的图片设置成头像

这里直接贴上跳到裁剪部分的代码

  private void photoClip(Uri uri) {
        // 调用系统中自带的图片剪裁
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
        intent.setDataAndType(uri, "image/*");
        // 下面这个crop=true是设置在开启的Intent中设置显示的VIEW可裁剪
        intent.putExtra("crop", "true");
        intent.putExtra("scale", true);
        // aspectX aspectY 是宽高的比例
        //这个是处理华为裁剪是圆形框的问题
        if (Build.MANUFACTURER.equals("HUAWEI")) {
            intent.putExtra("aspectX", 9998);
            intent.putExtra("aspectY", 9999);
        } else {
            intent.putExtra("aspectX", 1);
            intent.putExtra("aspectY", 1);
        }
        // outputX outputY 是裁剪图片宽高  这个值越大清晰度越高  但是太大了会崩
        intent.putExtra("outputX", 800);
        intent.putExtra("outputY", 800);
        intent.putExtra("return-data", false);

        uritempFile = Uri.parse("file://" + "/" +       Environment.getExternalStorageDirectory().getPath() + "/" + System.currentTimeMillis() + ".jpg");
        intent.putExtra(MediaStore.EXTRA_OUTPUT, uritempFile);
        intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
        intent.putExtra("noFaceDetection", true);

        startActivityForResult(intent, CLIP_PHOTO_BY_SELF_REQUEST_CODE);
    }

注释都写了   然后下面是在onActivityResult里面获取裁剪之后图片的方法

  @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode != RESULT_OK) return;
        switch (requestCode) {
            case CLIP_PHOTO_BY_SELF_REQUEST_CODE:
                if (uritempFile != null) {
                    bitmap = decodeUriBitmap(uritempFile);
                   
                    }
                }
                break;
        }
    }


    private Bitmap decodeUriBitmap(Uri uri) {

        Bitmap bitmap = null;

        try {

            bitmap = BitmapFactory.decodeStream(getActivity().getContentResolver().openInputStream(uri));

        } catch (FileNotFoundException e) {

            e.printStackTrace();

            return null;

        }

        return bitmap;

    }

大功告成  

发布了105 篇原创文章 · 获赞 56 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/suwenlai/article/details/102783811