用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - android代码库

拼图游戏调用本地相册

2017-04-28 作者:云代码会员举报

[android]代码库

public void gallery(View view) {
         // 激活系统图库,选择一张图片
         Intent intent = new Intent(Intent.ACTION_PICK);
         intent.setType("image/*");
         // 开启一个带有返回值的Activity,请求码为PHOTO_REQUEST_GALLERY
         startActivityForResult(intent, PHOTO_REQUEST_GALLERY);
     }
 
     /*
     * 从相机获取
    */
     public void camera(View view) {
       // 激活相机
      Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
         // 判断存储卡是否可以用,可用进行存储
       if (hasSdcard()) {
        tempFile = new File(Environment.getExternalStorageDirectory(),
                    PHOTO_FILE_NAME);
       // 从文件中创建uri
         Uri uri = Uri.fromFile(tempFile);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
         }
        // 开启一个带有返回值的Activity,请求码为PHOTO_REQUEST_CAREMA
       startActivityForResult(intent, PHOTO_REQUEST_CAREMA);
  }
 
    /*
      * 剪切图片
      */
    private void crop(Uri uri) {
         // 裁剪图片意图
         Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(uri, "image/*");
        intent.putExtra("crop", "true");
         // 裁剪框的比例,1:1
        intent.putExtra("aspectX", 1);
         intent.putExtra("aspectY", 1);
        // 裁剪后输出图片的尺寸大小
        intent.putExtra("outputX", 250);
        intent.putExtra("outputY", 250);
 
       intent.putExtra("outputFormat", "JPEG");// 图片格式
       intent.putExtra("noFaceDetection", true);// 取消人脸识别
         intent.putExtra("return-data", true);
         // 开启一个带有返回值的Activity,请求码为PHOTO_REQUEST_CUT
        startActivityForResult(intent, PHOTO_REQUEST_CUT);
    }
 
 /*
     * 判断sdcard是否被挂载
     */
     private boolean hasSdcard() {
        if (Environment.getExternalStorageState().equals(
               Environment.MEDIA_MOUNTED)) {
             return true;
        } else {
            return false;
         }
     }

     @Override
   protected void onActivityResult(int requestCode, int resultCode, Intent data) {
       if (requestCode == PHOTO_REQUEST_GALLERY) {
           // 从相册返回的数据
           if (data != null) {
               // 得到图片的全路径
                Uri uri = data.getData();
                crop(uri);
            }

       } else if (requestCode == PHOTO_REQUEST_CAREMA) {
           // 从相机返回的数据
           if (hasSdcard()) {
               crop(Uri.fromFile(tempFile));
           } else {
            Toast.makeText(MainActivity.this, "未找到存储卡,无法存储照片!", 0).show();
            }

        } else if (requestCode == PHOTO_REQUEST_CUT) {
           // 从剪切图片返回的数据
          if (data != null) {
                Bitmap bitmap = data.getParcelableExtra("data");
                this.iv_image.setImageBitmap(bitmap);
           }
            try {
                // 将临时文件删除
              tempFile.delete();
          } catch (Exception e) {
                e.printStackTrace();
            }

     }

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


分享到:
更多

网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。