0

ギャラリーから画像を選択してトリミングし、bundle. 私はこの方法でそれを取得します:

if (resultCode == Activity.RESULT_OK) {
      if (requestCode == SELECT_IMAGE || requestCode == SELECT_LANDSCAPE_IMAGE) {
           Bundle extras = data.getExtras();
           Bitmap photo = extras.getParcelable("data");
                .........................
      }
}

すべて正常に動作します。しかし、作物をキャンセルすると、バンドルが届きません。クロップをキャンセルするときに実際のビットマップを受け取りたいです。どうやってやるの?

4

2 に答える 2

-1
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == AppConstant.PICK_PROFILE_PIC) {
        // getActivity();
        if (resultCode == Activity.RESULT_OK && data != null) {
            selectedImage = data.getData();
            String[] filePathColumn = {MediaStore.Images.Media.DATA};

            Cursor cursor = getContentResolver().query(
                    selectedImage, filePathColumn, null, null, null);

            // some devices (OS versions return an URI of com.android
            // instead of com.google.android
            if (selectedImage.toString().startsWith(
                    "content://com.android.gallery3d.provider")) {
                // use the com.google provider, not the com.android
                // provider.
                selectedImage = Uri.parse(selectedImage.toString().replace(
                        "com.android.gallery3d",
                        "com.google.android.gallery3d"));
            }

            if (cursor != null) {
                int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                if (selectedImage.toString().startsWith(
                        "content://com.google.android.gallery3d")) {
                    columnIndex = cursor
                            .getColumnIndex(MediaStore.MediaColumns.DISPLAY_NAME);
                    if (columnIndex != -1) {
                        new GetBitmap(getApplicationContext(), selectedImage)
                                .execute();
                    }
                } else if (selectedImage.toString().startsWith(
                        "content://com.google.android.apps.photos.content")) {
                    new GetBitmap(getApplicationContext(), selectedImage).execute();
                } else {
                    cursor.moveToFirst();
                    mPicturePath = cursor.getString(columnIndex);
                    ImageUtils.rotateImage(getApplicationContext(), mPicturePath);
                    addGalleryImage(mPicturePath);
                }
            }
            cursor.close();
        }
        performCrop();

    } else if (requestCode == AppConstant.CLICK_IMAGE) {
        File f = new File(Environment.getExternalStorageDirectory()
                .toString());
        for (File temp : f.listFiles()) {
            if (temp.getName().equals(AppConstant.TEMP_IMAGE_NAME)) {
                f = temp;
                break;
            }
        }
        mPicturePath = f.toString();

        mBitmap = ImageUtils.rotateImage(this, mPicturePath);
        ImageUtils.setBitmapToView(mBitmap, mProfilePic);

       Toast.makeText(RegistrationActivity.this, mPicturePath + "", Toast.LENGTH_LONG).show();

    } else if (requestCode == AppConstant.CROP_IMAGE && resultCode != RESULT_CANCELED) {
        // get the returned data
        Bundle extras = data.getExtras();
        // get the cropped bitmap

        Bitmap thePic = extras.getParcelable("data");
            // retrieve a reference to the ImageView

            // display the returned cropped image
            GraphicsUtil graphicUtil = new GraphicsUtil();
            // picView.setImageBitmap(graphicUtil.getRoundedShape(thePic,(float)1.5,92));
            mProfilePic.setImageBitmap(graphicUtil.getCircleBitmap(
                    thePic, 16));
        Toast.makeText(RegistrationActivity.this, mPicturePath + "", Toast.LENGTH_LONG).show();

    }
    else if (requestCode == AppConstant.CROP_IMAGE && resultCode == RESULT_CANCELED) {
        Toast.makeText(RegistrationActivity.this, mPicturePath + "", Toast.LENGTH_LONG).show();

    }
}
于 2015-01-10T20:34:34.980 に答える