从图库中选取图像并裁剪尺寸大于500 * 500的图像

时间:2016-12-13 11:30:32

标签: android

我想从图库中选择图像并将其裁剪为800 * 600尺寸,但尺寸大于500 * 500则无法正常工作!!我怎么能这样做?

我的代码如下:


head(inputd$Semaine_lundi, n=20)
 [1] "-1-12-09 00:13:36 LMT" "-1-12-16 00:13:36 LMT" "-1-12-16 00:13:36 LMT" "-1-12-23 00:13:36 LMT"
 [5] "-1-12-30 00:13:36 LMT" "-1-12-06 00:13:36 LMT" "-1-12-13 00:13:36 LMT" "-1-12-20 00:13:36 LMT"
 [9] "-1-12-27 00:13:36 LMT" "-1-12-30 00:13:36 LMT" "-1-12-30 00:13:36 LMT" "-1-12-30 00:13:36 LMT"
[13] "-1-12-30 00:13:36 LMT" "-1-12-30 00:13:36 LMT" "-1-12-30 00:13:36 LMT" "-1-12-07 00:13:36 LMT"
[17] "-1-12-07 00:13:36 LMT" "-1-12-07 00:13:36 LMT" "-1-12-07 00:13:36 LMT" "-1-12-07 00:13:36 LMT"

1 个答案:

答案 0 :(得分:2)

试试这个,它适合我,希望它也会帮助你....

1 - 从图库中选择图片

Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
            intent.setType("image/*");
            startActivityForResult(Intent.createChooser(intent, "Select File"),Util.REQUEST_GALLERY);

2 - 在onActivityResult中裁剪图像,如下所示

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == getActivity().RESULT_OK) {
        switch (requestCode) {
            case Util.REQUEST_GALLERY:
                try {
                    if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED) && !Environment.getExternalStorageState().equals(
                            Environment.MEDIA_MOUNTED_READ_ONLY)) {
                        File file = new File(Uri.parse(Environment.getExternalStorageDirectory().getAbsolutePath()
                                + File.separator+ ".MyImages"+ File.separator+ "picture").getPath());
                        if (!file.exists()) {
                            file.mkdirs();
                        }

                        selectedPath1 = File.createTempFile("myImages"+ new SimpleDateFormat("ddMMyyHHmmss",Locale.US).format(new Date()),".jpg", file).toString();
                        croppedImageUri = Uri.fromFile(new File(selectedPath1));

                        Intent intent = new Intent("com.android.camera.action.CROP");
                        intent.setDataAndType(data.getData(), "image/*");
                        intent.putExtra("outputX", 700); // pass width
                        intent.putExtra("outputY", 700); // pass height
                        intent.putExtra("aspectX", 1);
                        intent.putExtra("aspectY", 1);
                        intent.putExtra("scale", true);
                        intent.putExtra("noFaceDetection", true);
                        intent.putExtra("output", croppedImageUri);
                        startActivityForResult(intent, Util.REQUEST_CROP_IMAGE);
                    } else {
                        Toast.show(getActivity(), "Please insert memory card to take pictures and make sure it is writeable");
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
                break;

                case Util.REQUEST_CROP_IMAGE:
                     Logg.e(getClass().getSimpleName(), "Profile_Pic ===== " + selectedPath1);
                     imgProfile.setImageURI(Uri.parse("file://" + croppedImageUri));
                break;

                default:
                break;
        }
    }
}