Android裁剪图片大小

use*_*772 1 android crop

我有以下代码供用户裁剪图像.当我将大小设置为256以上时,它不起作用.我的直觉是"cropIntent.putExtra("return-data",true);" 导致错误.如何将uri传递给cropIIntent并从onActivityResults中检出?换句话说,在裁剪后保存图像并检索.

private void performCrop() {
    try {
        //call the standard crop action intent (the user device may not support it)
        Intent cropIntent = new Intent("com.android.camera.action.CROP");
        //indicate image type and Uri
        cropIntent.setDataAndType(mImageCaptureUri, "image/*");
        //set crop properties
        cropIntent.putExtra("crop", "true");
        //indicate aspect of desired crop
        cropIntent.putExtra("aspectX", 4);
        cropIntent.putExtra("aspectY", 3);
        //indicate output X and Y
        cropIntent.putExtra("outputX", 256);
        cropIntent.putExtra("outputY", 256);
        //retrieve data on return
        cropIntent.putExtra("return-data", true);

        startActivityForResult(cropIntent, PIC_CROP);

    } //respond to users whose devices do not support the crop action
    catch (ActivityNotFoundException anfe) {
        //display an error message
        String errorMessage = "Your device doesn't support the crop action!";
        Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT);
        toast.show();
    }
}

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

         if (requestCode == PIC_CROP) {
            try {
               final TextView imgTv = (TextView) findViewById(R.id.imageInfo);
                Bundle extras = data.getExtras();
                thumbnail = extras.getParcelable("data");
                ImageView image = (ImageView) findViewById(R.id.pestImage);
                image.setImageBitmap(thumbnail);
        File f = new File(mImageCaptureUri.getPath());
        if (f.exists()) {
            f.delete();
        }
    }
}//end onactivity results
Run Code Online (Sandbox Code Playgroud)

use*_*772 6

private void performCrop() {
    try {
        //call the standard crop action intent (the user device may not support it)
        Intent cropIntent = new Intent("com.android.camera.action.CROP");
        //indicate image type and Uri
        cropIntent.setDataAndType(mImageCaptureUri, "image/*");
        //set crop properties
        cropIntent.putExtra("crop", "true");
        //indicate aspect of desired crop
        cropIntent.putExtra("aspectX", 4);
        cropIntent.putExtra("aspectY", 3);
        //indicate output X and Y
        cropIntent.putExtra("outputX", 800);
        cropIntent.putExtra("outputY", 800);

    File f = new File(Environment.getExternalStorageDirectory(),
            "/temporary_holder.jpg");
        try {
            f.createNewFile();
        } catch (IOException ex) {
        Log.e("io", ex.getMessage());  
        }

uri = Uri.fromFile(f);

      cropIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);

        startActivityForResult(cropIntent, PIC_CROP);

    } //respond to users whose devices do not support the crop action
    catch (ActivityNotFoundException anfe) {
        //display an error message
        String errorMessage = "Your device doesn't support the crop action!";
        Toast toast = Toast.makeText(this, errorMessage, Toast.LENGTH_SHORT);
        toast.show();
    }
}
Run Code Online (Sandbox Code Playgroud)

onActivityResult

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

         if (requestCode == PIC_CROP) {

                  String filePath = Environment.getExternalStorageDirectory()
                        + "/temporary_holder.jpg";

                thumbnail = BitmapFactory.decodeFile(filePath);



                       //thumbnail =    BitmapFactory.decodeFile(filePath);
               //    Log.i("",String.valueOf(thumbnail.getHeight()));

                    ImageView image = (ImageView) findViewById(R.id.pestImage);
                    image.setImageBitmap(thumbnail);
                    }}
Run Code Online (Sandbox Code Playgroud)