注意要有讀取文件的權限,需要添加如下的權限:
<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);
}
}