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

 更新时间:2017年07月17日 09:12:57   作者:ganchuanpu  
这篇文章主要介绍了Android 通过Intent调用系统拍照程序出现图片太小的问题解决办法的相关资料,需要的朋友可以参考下

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 调用系统拍照出现问题的解决办法,如有疑问大家请留言讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • Flutter中http请求抓包的完美解决方案

    Flutter中http请求抓包的完美解决方案

    这篇文章主要给大家介绍了关于Flutter中http请求抓包的完美解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者使用Flutter具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-03-03
  • Android UI设计与开发之ViewPager仿微信引导界面以及动画效果

    Android UI设计与开发之ViewPager仿微信引导界面以及动画效果

    这篇文章主要为大家详细介绍了Android UI设计与开发之ViewPager仿微信引导界面以及动画效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Android 验证码功能实现代码

    Android 验证码功能实现代码

    这篇文章主要介绍了Android 验证码功能实现代码的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-08-08
  • Android模拟实现华为系统升级进度条

    Android模拟实现华为系统升级进度条

    这篇文章主要介绍了如何通过Android模拟实现华为在系统升级时显示的进度条。文中的实现过程讲解详细,感兴趣的小伙伴可以动手试一试
    2022-01-01
  • Android 创建依赖库的方法(保姆级教程)

    Android 创建依赖库的方法(保姆级教程)

    这篇文章主要介绍了Android 创建依赖库的方法(保姆级教程),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • Android使用AudioRecord实现录音功能

    Android使用AudioRecord实现录音功能

    这篇文章主要为大家详细介绍了Android使用AudioRecord实现录音功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-08-08
  • Android:Field can be converted to a local varible.的解决办法

    Android:Field can be converted to a local varible.的解决办法

    这篇文章主要介绍了Android:Field can be converted to a local varible.的解决办法的相关资料,希望通过本文能帮助到大家,让大家遇到这样的问题轻松解决,需要的朋友可以参考下
    2017-10-10
  • linphone-sdk-android版本号生成解析

    linphone-sdk-android版本号生成解析

    这篇文章主要为大家介绍了linphone-sdk-android版本号生成解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • Android RecyclerView自定义上拉和下拉刷新效果

    Android RecyclerView自定义上拉和下拉刷新效果

    这篇文章主要为大家详细介绍了Android RecyclerView自定义上拉和下拉刷新效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • Android仿搜狐视频、微视等列表播放视频功能

    Android仿搜狐视频、微视等列表播放视频功能

    这篇文章主要为大家详细介绍了Android仿搜狐视频、微视等列表播放视频功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08

最新评论