美文网首页第一行代码学习
第一行代码笔记——ChoosePicTest

第一行代码笔记——ChoosePicTest

作者: tuionf | 来源:发表于2016-08-24 16:39 被阅读41次

    ChoosePicTest

    第一行代码的拍照和选择图库照片,有改动

    演示

    20160824_163601.gif

    笔记

    点击拍照

    1. 创建file存储图片
      <pre>
      File outImage = new File(Environment.getExternalStorageDirectory(),"tempImg.png");
      </pre>

    2. 根据之前的路径,创建一个空文件
      <pre>
      outImage.createNewFile(); </pre>

    3. 将file文件转换成Uri—— 形式:file://
      <pre>
      imageUri = Uri.fromFile(outImage);</pre>

    4. 启动相机
      <pre>
      //启动相机程序
      Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
      intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);
      startActivityForResult(intent,TAKE_PHOTO);
      </pre>
      或者

    5. 打开相册
      <pre>
      Intent intent = new Intent("android.intent.action.GET_CONTENT");
      intent.setType("image/*"); intent.putExtra("crop",true);
      intent.putExtra("scale",true);
      intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);
      startActivityForResult(intent,SELECT_PHOTO);
      </pre>

    选择图库相片

    1,2,3步骤同上

    1. 设置intent
      <pre>
      Intent intent = new Intent("android.intent.action.GET_CONTENT");
      intent.setType("image/*");
      intent.putExtra("crop",true);
      intent.putExtra("scale",true); intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri); startActivityForResult(intent,SELECT_PHOTO);
      </pre>

    onActivityResult处理——注意两处获取bitmap的方式是不一样的

    拍照和裁剪

    switch (requestCode){
                case  TAKE_PHOTO:
                    if (resultCode == RESULT_OK){
                        Intent intent = new Intent("com.android.camera.action.CROP");
                        intent.setDataAndType(imageUri,"image/*");
                        intent.putExtra("scale",true);
                        intent.putExtra(MediaStore.EXTRA_OUTPUT,imageUri);
                        startActivityForResult(intent,CROP_PHOTO);
                    }
    
                   break;
    
                case  CROP_PHOTO:
                    if (resultCode == RESULT_OK) {
                        try {
                            // 把InputStream转换成bitmap
                            Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));
                            //将裁减后的照片显示出来
                            mImageView.setImageBitmap(bitmap);
                        } catch (FileNotFoundException e) {
                            e.printStackTrace();
                        }
                    }
    
                    break;
    

    选择并显示

    case SELECT_PHOTO:
                    ContentResolver resolver = getContentResolver();
                    //照片的原始资源地址
                    Uri uri = data.getData();
                    Log.d(TAG, "onActivityResult: "+uri);
    
                    try {
    
                        Bitmap photo = MediaStore.Images.Media.getBitmap(resolver,uri);
                        if (photo != null){
                            mImageView.setImageBitmap(photo);
                        }
                    }catch (IOException e){
                        e.printStackTrace();
                    }
    

    相关文章

      网友评论

        本文标题:第一行代码笔记——ChoosePicTest

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