如何在从图库中取出图像时裁剪图像并将其显示在图像视图中

时间:2015-12-16 19:35:48

标签: android image android-image

当我点击按钮时,它会转到画廊来选择图像,但只要我选择图像,它就会返回到没有裁剪的活动。此外,图像不会显示在imageView中。

这是我的代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_camera);

    imgview = (ImageView) findViewById(R.id.imageView1);
    Button buttonCamera = (Button) findViewById(R.id.btn_take_camera);
    Button buttonGallery = (Button) findViewById(R.id.btn_select_gallery);
    buttonCamera.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

            intent.putExtra(MediaStore.EXTRA_OUTPUT,
                    MediaStore.Images.Media.EXTERNAL_CONTENT_URI.toString());

            intent.putExtra("crop", "true");
            intent.putExtra("aspectX", 0);
            intent.putExtra("aspectY", 0);
            intent.putExtra("outputX", 200);
            intent.putExtra("outputY", 150);

            try {

                intent.putExtra("return-data", true);
                startActivityForResult(intent, PICK_FROM_CAMERA);

            } catch (ActivityNotFoundException e) {

            }
        }
    });
    buttonGallery.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            Intent intent = new Intent();

            intent.setType("image/*");
            intent.setAction(Intent.ACTION_GET_CONTENT);

            intent.putExtra("crop", "true");
            intent.putExtra("aspectX", 0);
            intent.putExtra("aspectY", 0);
            intent.putExtra("outputX", 200);
            intent.putExtra("outputY", 150);

            try {

                intent.putExtra("return-data", true);
                startActivityForResult(Intent.createChooser(intent,
                        "Complete action using"), PICK_FROM_GALLERY);

            } catch (ActivityNotFoundException e) {

            }
        }
    });
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    if (requestCode == PICK_FROM_CAMERA) {
        Bundle extras = data.getExtras();
        if (extras != null) {
            Bitmap photo = extras.getParcelable("data");
            imgview.setImageBitmap(photo);

        }
    }

    if (requestCode == PICK_FROM_GALLERY) {
        Bundle extras2 = data.getExtras();
        if (extras2 != null) {
            Bitmap photo = extras2.getParcelable("data");
            imgview.setImageBitmap(photo);

        }
    }
}
}

1 个答案:

答案 0 :(得分:0)

  

但它返回活动而没有裁剪

这是因为任何地方都不需要任何活动来兑现那些随机Intent额外内容,更不用说用户为您的特定请求选择的任何活动(基于他们的设备并安装ACTION_IMAGE_CAPTURE和{ {1}}活动)。您会注意到ACTION_GET_CONTENTACTION_IMAGE_CAPTURE上没有记录这些额外内容。

有很多image cropping libraries available for Android。使用一个。

  

此图像也不会显示在imageView中。

这是因为ACTION_GET_CONTENT不会通过ACTION_GET_CONTENT data额外内容返回任何内容。使用Intent返回的Uri {通过ACTION_GET_CONTENT通过getData()获得Intent。将onActivityResult()提供给您最喜欢的图像加载库(Picasso,Universal Image Loader等)。