最近项目在搞用户图片上传功能,要从本地选择图片或者camera拍摄的图片显示预览并上传,之前为了方便一直想着用别人的轮子来造车,结果各种问题,要么应用崩溃,要么适配性极差,最后没办法,只能返璞归真,使用系统提供的方式来获取照片.然而,开发并不是一帆风顺的,网上提供的解决方案都是使用bitmap获取图片,得到的图片分辨率比较低,虽然网上找了很多文章,但很多都是答非所问,又或者一大堆问题,还不如自己慢慢琢磨研究.
在之前找了好多参考文章之后,都没能解决问题,有点绝望,没想到自己琢磨倒是搞好了.下面分享一波,也记录一下,方便日后使用.
先来看看最终实现的效果吧:
效果比较简单,只涉及到图片uri获取和展示,至于文件上传一般都是通过文件路径得到file,然后上传,本文并不介绍上传功能,大家可以自行研究,文章重点只为解决获取camera和本地图片模糊问题,下面来具体说明一下实现思路.
- 调用系统相机并设置输出路径
private void takePhoto() { //跳转到新的Activity去拍照片 //进来时就同时拥有两个权限,调用系统拍照 String state = Environment.getExternalStorageState(); if (state.equals(Environment.MEDIA_MOUNTED)) { Intent photoIn = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); String out_file_path = SAVED_IMAGE_DIR_PATH;