Android 通过Intent调用系统拍照程序出现图片太小的问题解决办法

Intent it = newIntent("android.media.action.IMAGE_CAPTURE");startActivityForResult(it, Activity.DEFAULT_KEYS_DIALER);

按下拍照键后,会返回到你的activity,所以你的activity要在onActivityResult方法里加一个处理,

protectedvoidonActivityResult(intrequestCode, intresultCode, Intent data) {   super.onActivityResult(requestCode, resultCode, data);   try{     Bundle extras = data.getExtras();     Bitmap b = (Bitmap) extras.get("data");     take = b;     ImageView img = (ImageView)findViewById(R.id.image);     img.setImageBitmap(take);   }catch(Exception e){   } }

但是这样你会发现这个bitmap尺寸太小了。明显是被压缩过了,要像返回未被压缩的照片,那么你要给调用系统拍照程序intent加上参数,指定图片输出的位置。

Intent it = newIntent("android.media.action.IMAGE_CAPTURE");it.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(newFile(F.SD_CARD_TEMP_PHOTO_PATH)));startActivityForResult(it, Activity.DEFAULT_KEYS_DIALER);

这样就是大图片返回了。

protectedvoidonActivityResult(intrequestCode, intresultCode, Intent data) {   super.onActivityResult(requestCode, resultCode, data);   try{     ImageView img = (ImageView)findViewById(R.id.image);     take = U.ResizeBitmap(U.getBitmapForFile(F.SD_CARD_TEMP_PHOTO_PATH), 640);     img.setImageBitmap(take);     imgflag = true;   }catch(Exception e){    } }

另外注意一下,返回的那个bitmap会很大,你用完以后要把它回收掉,不然你很容易内存报oom错误

public static Bitmap ResizeBitmap(Bitmap bitmap, intnewWidth) {    intwidth = bitmap.getWidth();   intheight = bitmap.getHeight();   floattemp = ((float) height) / ((float) width);   intnewHeight = (int) ((newWidth) * temp);   floatscaleWidth = ((float) newWidth) / width;   floatscaleHeight = ((float) newHeight) / height;   Matrix matrix = newMatrix();   // resize the bit map   matrix.postScale(scaleWidth, scaleHeight);   // matrix.postRotate(45);   Bitmap resizedBitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);   bitmap.recycle();   return resizedBitmap; }

以上就是Android 调用系统拍照出现问题的解决办法,如有疑问大家请留言讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

更多相关文章

  1. Nginx系列教程(六)| 手把手教你搭建 LNMP 架构并部署天空网络电影
  2. Android(安卓)display架构分析(六)
  3. Android(安卓)代理拦截系统层代码
  4. android LruCache 有效避免程序OOM
  5. Android属性服务分析(property service)
  6. Android(安卓)Studio编译时的那些问题
  7. Android中ActivityLifecycleCallbacks监听Activity们的生命周期
  8. Android(安卓)Content Provider的共享数据更新通知机制分析
  9. Android修改状态栏颜色全方位教程

随机推荐

  1. 安卓布局详细
  2. https://developers.google.com/chrome/m
  3. android中使用wakelock
  4. 一个很有深度的Android Blog
  5. Android 新手入门指导
  6. android 签名
  7. Android studio生成APK打包,修改生成APK的
  8. Android 支持的文件类型
  9. Android控件属性大全
  10. Step Detector and Step Counter Sensors