最近有一个需求需要调用系统的拍照功能
因为照片要做人脸识别处理,所以要求清晰度比较高,
但是发现拍照后返回的图片特别模糊,查看了相关文档,
原来系统拍照默认返回的是缩略图(为了节省内存)
想要返回原图的话,需要进行如下设置:
private String photoPath ;//照片保存路径
默认拍照(返回缩略图)
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, CAMERA_REQUEST_CODE);
修改后(返回大图)
Intent intent2 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
photoPath = Environment.getExternalStorageDirectory() + "/text/text.jpg"; //拍照文件保存路径
intent2.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(new File(photoPath)));
startActivityForResult(intent2, CAMERA_REQUEST_CODE);
然后在
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_REQUEST_CODE) {
Bitmap bm = BitmapFactory.decodeFile(photoPath);
//使用过后记得释放掉bitmap,节省内存
bm.recycle();
}
}
没错,就是先把拍照后的照片保存到本地,在根据uri获取到的就是大图了