Android调用相机拍照获取原始照片

本文介绍了一种在Android应用中使用系统相机拍照并获取原始照片的方法,包括必要的权限配置、启动相机流程及如何对获取的照片进行尺寸压缩以适配显示。
Android调用相机拍照,获取原始照片的解决方案如下:
注意要有读取文件的权限,需要添加如下的权限:
<uses-permission android:name="android.permission.CAMERA" />
按钮点击事件:
   
public void click(View view) {  
           Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);//相机捕捉图片的意图  
           intent.putExtra(MediaStore.EXTRA_OUTPUT, imageFileUri);//指定系统相机拍照保存在imageFileUri所指的位置  
           startActivityForResult(intent, CAPTURE_PIC);//启动系统相机,等待返回  
       }  
   
       @Override  
       protected void onActivityResult(int requestCode, int resultCode, Intent data) {  
           if (resultCode == RESULT_OK && requestCode == CAPTURE_PIC) {  
               Options options = new Options();  
               options.inJustDecodeBounds = true;//设置解码只是为了获取图片的width和height值,而不是真正获取图片  
               Bitmap bitmap = BitmapFactory.decodeFile(imageFilePath, options);//解码后可以options.outWidth和options.outHeight来获取图片的尺寸  
    
              int widthRatio = (int) Math.ceil(options.outWidth / width);//获取宽度的压缩比率  
              int heightRatio = (int) Math.ceil(options.outHeight / height);//获取高度的压缩比率  
   
              if (widthRatio > 1 || heightRatio > 1) {//只要其中一个的比率大于1,说明需要压缩  
                  if(widthRatio>=heightRatio){//取options.inSampleSize为宽高比率中的最大值  
                      options.inSampleSize = widthRatio;  
                  }else{  
                      options.inSampleSize = heightRatio;  
                  }  
              }  
                
               options.inJustDecodeBounds = false;//设置为真正的解码图片  
               bitmap = BitmapFactory.decodeFile(imageFilePath, options);//解码图片  
    
               imageView.setImageBitmap(bitmap);  
           }  
          super.onActivityResult(requestCode, resultCode, data);  
       }  
    
   }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yafyr

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值