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); } }
时间: 2024-10-11 16:43:34