从这个Android裁剪图像库输出Uri?

时间:2015-01-27 12:32:18

标签: android image uri crop

我正在尝试将SoundCloud's image crop实施到我的应用中。这是我到目前为止所做的事情:

致电Crop.pickImage((Activity) this)选择图片

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == Crop.REQUEST_PICK && resultCode == RESULT_OK) {
        Uri inputUri = data.getData();
        new Crop(inputUri).output(outputUri).asSquare().start((Activity) context);
    }
    else if (requestCode == Crop.REQUEST_CROP && resultCode == RESULT_OK) {
        Uri cropped = data.getData();
    }
}

此时我不知道outputUri应该是什么。我可以使用相同的inputUri作为输出,但这会覆盖原始图像文件。我想改为创建一个新文件。但我无法创建新的Uri,因为Android Studio告诉我新初始化的Uri是抽象的,无法使用。

1 个答案:

答案 0 :(得分:0)

我也使用以下方法裁剪图像库以进行URI创建。希望它能帮到你:

private void fileSaving(){
        String stateEnvironment = Environment.getExternalStorageState();
        if (Environment.MEDIA_MOUNTED.equals(stateEnvironment)) {
            mFileTemp = ChatUtils.getOutputMediaFile(101);//new File(Environment.getExternalStorageDirectory(), TEMP_PHOTO_FILE_NAME);
        } else {
            mFileTemp = new File(getFilesDir(), sTEMP_PHOTO_FILE_NAME);
        }
    }

    private void takePicture() {

        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

        try {
            Uri mImageCaptureUri = null;
            String state = Environment.getExternalStorageState();
            if (Environment.MEDIA_MOUNTED.equals(state)) {
                mImageCaptureUri = Uri.fromFile(mFileTemp);
            } else {
                // mImageCaptureUri =
                // InternalStorageContentProvider.CONTENT_URI;
            }
            intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT,
                    mImageCaptureUri);
            intent.putExtra("return-data", true);
            startActivityForResult(intent, mREQUEST_CODE_TAKE_PICTURE);
        } catch (ActivityNotFoundException e) {

        }
    }