调用系统相机拍照时图片模糊

近期调一个bug,采用系统的相机拍照后图片变得模糊,经技术领导指点了一下,便找到了原因。

当拍完照片后有两种方式 来获取图片 ,

一 : 在 onActivityResult (....Intent intent)  中通过intent 来获取,这种方式系统会默认 把图片压缩,很不巧的是 项目的代码就是通过这种方式来

          取得图片的。

           

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
		Bitmap photo = null;
Bundle bundle = data.getExtras();
					if (bundle != null) {
						photo = (Bitmap) bundle.get("data");

二:当拍完照后 图片 会存储到 本地 sd卡中,这里存放的就是原图,没有被压缩过,因此比较大,可以通过路径来获取。

private void takePhoto() {

		String state = Environment.getExternalStorageState();
		if (state.equals(Environment.MEDIA_MOUNTED)) {
			Intent getImageByCamera = new Intent("android.media.action.IMAGE_CAPTURE");
			// 1 指定图片保存路径 2.在onactivityresult 中 通过uri 获取 
			getImageByCamera.putExtra(MediaStore.EXTRA_OUTPUT,
					Uri.fromFile(getTempFile(this)));
			
			startActivityForResult(getImageByCamera, SELECT_PIC_BY_TACK_PHOTO);
		} else {
			Toast.makeText(getApplicationContext(), "内存卡不存在", Toast.LENGTH_LONG).show();
		}

	}

// 获取图片

	Bitmap photo = null;
		
		final File temp = getTempFile(this);
		try {
			photo = Media.getBitmap(getContentResolver(),Uri.fromFile(temp));
			photo = getBitmap(photo, 400, 400);
		} catch (FileNotFoundException e) {
		e.printStackTrace();
		} catch (IOException e) {
		e.printStackTrace();
		}
		
--------------------------------------------
	
	private File getTempFile(Context context) {
		// 指定文件路径为 外部存储 即sdcard。 文件夹名字为 项目包名。
		/*final File path = new File(Environment.getExternalStorageDirectory(),
		context.getPackageName());
		if (!path.exists()) {
		path.mkdir();
		}
		return new File(path, "imagefilename");*/
		
		File temp = new File(CacheStorage.getCacheDir(mContext), "picN.jpg");
		return temp ;
		}

通过方式二来获取图片后再进过 我们自己处理(压缩) 就是清晰的图了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值