Android开发从相册中选取照片

作者: 一本未写完的书 | 来源:发表于2017-09-12 19:41 被阅读506次

最近项目在做一个功能:就是需要从用户选择头像跳转到相册选择图片,这应该是一个很简单的需求,但是在网上搜了一下有好多都讲的很乱,其实用几十行代码就可以实现的为什么要说的那么复杂呢,下面就简单说一下喽。

下面说两种方法分别是直接选择相册返回,另外一种为选择相册之后进行裁剪。先上效果图 这里写图片描述

  • (1)直接选择相册后返回
  • 第一步就是主要跳转的相册
 //在这里跳转到手机系统相册里面
        Intent intent = new Intent(
                Intent.ACTION_PICK,
                android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(intent, IMAGE_REQUEST_CODE);
  第二步就是返回的时候获取相册的路径
  @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {

        super.onActivityResult(requestCode, resultCode, data);
        //在相册里面选择好相片之后调回到现在的这个activity中
        switch (requestCode) {
            case IMAGE_REQUEST_CODE://这里的requestCode是我自己设置的,就是确定返回到那个Activity的标志
                if (resultCode == RESULT_OK) {//resultcode是setResult里面设置的code值
                    try {
                        Uri selectedImage = data.getData(); //获取系统返回的照片的Uri
                        String[] filePathColumn = {MediaStore.Images.Media.DATA};
                        Cursor cursor = getContentResolver().query(selectedImage,
                                filePathColumn, null, null, null);//从系统表中查询指定Uri对应的照片
                        cursor.moveToFirst();
                        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                        path = cursor.getString(columnIndex);  //获取照片路径
                        cursor.close();
                        Bitmap bitmap = BitmapFactory.decodeFile(path);
                        iv_photo.setImageBitmap(bitmap);
                    } catch (Exception e) {
                        // TODO Auto-generatedcatch block
                        e.printStackTrace();
                    }
                }
                break;
        }
    }
  • (2) 选择图片后裁剪先上图


    这里写图片描述
  • 首先也是要调起相册
// 使用意图直接调用手机相册
        Intent intent = new Intent(
                Intent.ACTION_PICK,
                android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        // 打开手机相册,设置请求码
        startActivityForResult(intent, IMAGE_REQUEST_CODE);

然后这里增加了一步就是用户选择了相册之后然后再增加裁剪功能

 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode != RESULT_OK) {
            return;
        } else {
            switch (requestCode) {
                case IMAGE_REQUEST_CODE:
                    resizeImage(data.getData());
                    break;

                case RESIZE_REQUEST_CODE:
                    if (data != null) {
                        showResizeImage(data);
                    }
                    break;
            }
        }
        super.onActivityResult(requestCode, resultCode, data);
    }
    //这里增加裁剪
    public void resizeImage(Uri uri) {
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(uri, "image/*");
        intent.putExtra("crop", "true");
        intent.putExtra("aspectX", 1);
        intent.putExtra("aspectY", 1);
        //裁剪的大小
        intent.putExtra("outputX", 150);
        intent.putExtra("outputY", 150);
        intent.putExtra("return-data", true);
        //设置返回码
        startActivityForResult(intent, RESIZE_REQUEST_CODE);
    }
    private void showResizeImage(Intent data) {
        Bundle extras = data.getExtras();
        if (extras != null) {
            Bitmap photo = extras.getParcelable("data");
            //裁剪之后设置保存图片的路径
            String path = getFilesDir().getPath() + File.separator + IMAGE_FILE_NAME;
            //压缩图片
            ImageUtils.saveImage(photo, path);
            new BitmapDrawable();
            Drawable drawable = new BitmapDrawable(photo);
            iv_photo.setImageDrawable(drawable);
        }
    }

ok,源代码下载

相关文章

  • 适配Android7.0调取相机拍照并返回照片

    Android调取系统相机拍照获取到拍摄照片或从相册中直接选取照片后展示上传是Android开发中很常见的一个功能...

  • Android开发从相册中选取照片

    最近项目在做一个功能:就是需要从用户选择头像跳转到相册选择图片,这应该是一个很简单的需求,但是在网上搜了一下有好多...

  • 从相册中选取照片

    在上一篇的基础上增加从相册中选取的功能,增加一个按钮的点击事件: 在点击事件中进行了一个运行时权限处理,动态的申请...

  • 从相册中选取照片

    1、选择单张照片a. UIImagePickerController (系统自带选择界面)b. AssetsL...

  • iOS之相册相机处理

    访问相册或相机 在日常开发中,很多时候我们需要访问我们的相册或者是相机,选取或者拍摄我们需要的照片 想要操作相册或...

  • 16-核心动画

    画板(图片处理) 为了能对照片提供更多的手势操作,需要把从相册中选取的照片放置到UIImageView中,然后对控...

  • android 拍照、相册选取,适配7.0

    android拍照、相册选取的方法,权限获取用的RxPermissions。 拍照 相册

  • Android 调用相机和相册

    android开发中,调用相机拍照和选取相册图片是很常见的功能,自己就写了一个小demo,流程简单,方便参考; 实...

  • Android----从相册选取图片

    导入包名 相册布局 相册条目布局 图片页面 图片条目布局 相册页面代码 图片页面代码 辅助类 MyImageSho...

  • Android 拍照和从相册选取

网友评论

    本文标题:Android开发从相册中选取照片

    本文链接:https://www.haomeiwen.com/subject/wdxcsxtx.html