使用Android怎么从相册中选取照片

发布时间:2021-04-15 17:19:28 作者:Leah
来源:亿速云 阅读:240

使用Android怎么从相册中选取照片?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

(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) 选择图片后裁剪先上图

使用Android怎么从相册中选取照片

首先也是要调起相册

// 使用意图直接调用手机相册
    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);
    }
  }

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

推荐阅读:
  1. android如何从系统或相机中获取照片
  2. 微信小程序中如何实现拍照或从相册选取图片上传

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

android

上一篇:怎么在HTML5页面中在线预览PDF

下一篇:使用vue怎么实现一个粒子特效

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》