为了账号安全,请及时绑定邮箱和手机立即绑定

选择一个后裁剪图像的最佳方式

选择一个后裁剪图像的最佳方式

青春有我 2023-03-09 10:33:45
需要裁剪图像的最佳方式尝试了一些方法,但它没有给我正确裁剪的选项,如果你可以请帮我提供示例和裁剪图像的最佳方法private void selectFile() {    Intent img = new Intent(Intent.ACTION_OPEN_DOCUMENT);    img.setType("image/*");    startActivityForResult(i, 3000);}--- Mohammed --- 裁剪后如何获取Uri                Uri uri = data.getData();                getContentResolver().takePersistableUriPermission(Objects.requireNonNull(uri), Intent.FLAG_GRANT_READ_URI_PERMISSION);                stickerPack.addSticker(uri, this);            }            finish();            startActivity(getIntent());        }
查看完整描述

1 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

您可以使用默认的 android Crop 功能


int PICK_IMAGE_REQUEST = 100;

int PIC_CROP = 1;


void chooseImageFromGallery() {

    if (isPermissionsGranted(Manifest.permission.READ_EXTERNAL_STORAGE)) {

        Intent intent = new Intent(Intent.ACTION_PICK,

                MediaStore.Images.Media.EXTERNAL_CONTENT_URI);

        startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);

    } else {

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

            requestPermissions(arrayOf(Manifest.permission.READ_EXTERNAL_STORAGE),

                    PICK_IMAGE_REQUEST);

        }

    }

}


 @Override void onRequestPermissionsResult(int requestCode,

        String permissions[], int[] grantResults) {

        super.onRequestPermissionsResult(requestCode, permissions, grantResults)

               if (requestCode == PICK_IMAGE_REQUEST && grantResults.length > 0  && grantResults[0] == PackageManager.PERMISSION_GRANTED ) {

                chooseImageFromGallery()

               }

    }



@Override void onActivityResult(Int requestCode, Int resultCode, Intent data) {

    if (resultCode == Activity.RESULT_OK && requestCode == PICK_IMAGE_REQUEST) {

        Uri imageUri = data?.data

        performCrop(imageUri)

    }else if(resultCode == Activity.RESULT_OK && requestCode == PIC_CROP){

     // get the returned data

    Bundle extras = data.getExtras();

    // get the cropped bitmap

    Bitmap selectedBitmap = extras.getParcelable("data");


    imgView.setImageBitmap(selectedBitmap);

    }

}


private void performCrop(Uri picUri) {

try {

    Intent cropIntent = new Intent("com.android.camera.action.CROP");

    // indicate image type and Uri

    cropIntent.setDataAndType(picUri, "image/*");

    // set crop properties here

    cropIntent.putExtra("crop", true);

    // indicate aspect of desired crop

    cropIntent.putExtra("aspectX", 1);

    cropIntent.putExtra("aspectY", 1);

    // indicate output X and Y

    cropIntent.putExtra("outputX", 128);

    cropIntent.putExtra("outputY", 128);

    // retrieve data on return

    cropIntent.putExtra("return-data", true);

    // start the activity - we handle returning in onActivityResult

    startActivityForResult(cropIntent, PIC_CROP);

}

// respond to users whose devices do not support the crop action

catch (ActivityNotFoundException anfe) {

    // display an error message

    String errorMessage = "Whoops - your device doesn't support the crop action!";

    Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT);

    toast.show();

}

}

或者您可以使用任何库来选择和裁剪图像,请检查这些库


https://github.com/ArthurHub/Android-Image-Cropper


https://github.com/Yalantis/uCrop


查看完整回答
反对 回复 2023-03-09
  • 1 回答
  • 0 关注
  • 106 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号