android 通过Intent打开相册并获取选择的图片

相信大家在工作都要用到获取手机图片的需求,今天给大家介绍一下,我在项目中学习到的获取图片的方法。
话不多说,上代码:

  1. 通过intent获取手机中所以的图片


    public static final int PHOTOZOOM = 2; // 缩放
    public static final int PHOTORESOULT = 3;// 结果
    public static final String IMAGE_UNSPECIFIED = "image/*";
    Intent intent = new Intent(Intent.ACTION_GET_CONTENT,
    null);
    intent.setDataAndType(
    MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
    IMAGE_UNSPECIFIED);
    startActivityForResult(intent, PHOTOZOOM);

    2.onActivityResult方法

  @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == PHOTOZOOM) {
            startPhotoZoom(data.getData());
            Uri uri = data.getData();

            String[] pojo = { MediaStore.Images.Media.DATA };
            @SuppressWarnings("deprecation")
            Cursor cursor = managedQuery(uri, pojo, null, null, null);
            if (cursor != null) {
                int index = cursor
                        .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                cursor.moveToFirst();
                String path = cursor.getString(index);
                if (path != null) {
                    picPath = path;
                }
            }
        }
        // 处理结果
        if (requestCode == PHOTORESOULT) {
            Bundle bundle = data.getExtras();
            if (bundle != null) {
                Bitmap photo = bundle.getParcelable("data");
                ByteArrayOutputStream stream = new ByteArrayOutputStream();
                photo.compress(Bitmap.CompressFormat.JPEG, 75, stream);// (0-100)压缩文件
//                icon.setImageBitmap(photo);
            }
            if (picPath == null) {

                Toast.makeText(SendImageActivity.this, "未修改图片!", Toast.LENGTH_SHORT)
                        .show();
            } else {
                final File file = new File(picPath);
                Log.i("picPath", "******" + picPath);
                if (file != null) {
                    //在这的file就是你获取到的图片文件
                }
            }

        }
        super.onActivityResult(requestCode, resultCode, data);
    }

3.图片缩放方法

public void startPhotoZoom(Uri uri) {
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(uri, IMAGE_UNSPECIFIED);
        intent.putExtra("crop", "true");
        // aspectX aspectY 是宽高的比例
        intent.putExtra("aspectX", 1);
        intent.putExtra("aspectY", 1);
        // outputX outputY 是裁剪图片宽高
        intent.putExtra("outputX", 200);
        intent.putExtra("outputY", 200);
        intent.putExtra("return-data", true);
        startActivityForResult(intent, PHOTORESOULT);
    }
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值