关于系统相机拍照获取的照片尺寸较小问题的解决

网上大部分的解决方案,,都是如下方式:

Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");startActivityForResult(intent,REQUEST_CODE_CAPTURE_CAMEIA);

拍照完成之后,回调:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {if (resultCode != RESULT_OK) { //此处的 RESULT_OK 是系统自定义得一个常量return;}if (data!=null) {if (requestCode == REQUEST_CODE_CAPTURE_CAMEIA) {Uri uri = data.getData();

if (uri == null) {//use bundle to get dataBundle dataBundle = data.getExtras();if (dataBundle != null) {Bitmap photo = (Bitmap) dataBundle.get("data");if (photo!=null) {

//在一些手机上获取到的照片,发现尺寸很小

}

}

} else {

//通过uri来显示图片

imageView.setImage(uri);

}

}

}

}

通过实验之后发现,在一些手机上是通过uri来获取到图片的,都是可以获取到实际拍摄大小的照片。

还有一些手机是通过data.getExtras().get("data")来获取拍摄的照片,但是发现实际得到的照片尺寸却很小。

通过研究找到了解决的方案如下:

改写调用方法:

String filename = Tools.getCurDateStr()+".jpg";cameraFile = new File(Environment.getExternalStorageDirectory()+"/"+Const.FOLDER_VOC_TEMP+"/"+filename);Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(cameraFile));startActivityForResult(intent, REQUEST_CODE_CAPTURE_CAMEIA);

回调的时候:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

if (cameraFile.exists()) {Bitmap bitmap = null;try {FileInputStream fis = new FileInputStream(cameraFile);bitmap = BitmapFactory.decodeStream(fis);fis.close();} catch (Exception e) {e.printStackTrace();}if (bitmap!=null) {Log.e(getClass().getName(), (bitmap.getWidth()+","+bitmap.getHeight()));}}

}

这样就解决了此问题。

黑夜下,撕开那张面具尽是怠倦的容颜,

关于系统相机拍照获取的照片尺寸较小问题的解决

相关文章:

你感兴趣的文章:

标签云: