1.拍摄图片后获取的图片大小为 11M  

通过一下方法获取到图片

Uri takePhotoUri = Uri.parse(android.provider.MediaStore.Images.Media.insertImage(getContentResolver(),                            f.getAbsolutePath(), null, null));
但是有时候会导致OOM

2.所以改为在拍照的时候设置图片存储路径

private String mTakePhotoName;    private void takePhoto() {        String status = Environment.getExternalStorageState();        if (status.equals(Environment.MEDIA_MOUNTED)) {            try {                mTakePhotoName = System.currentTimeMillis() + ".png";                File dir = new File(Environment.getExternalStorageDirectory() + "/FollowMePhoto");                if (!dir.exists()) dir.mkdirs();                Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);                File f = new File(dir, mTakePhotoName);                Uri u = Uri.fromFile(f);                intent.putExtra(MediaStore.Images.Media.ORIENTATION, 0);                intent.putExtra(MediaStore.EXTRA_OUTPUT, u);//                intent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, 3 * 1024 );                startActivityForResult(intent, Constants.ActivityReturnReuqestCode.TAKE_PHOTO);            } catch (ActivityNotFoundException e) {//                Toast.makeText(PersonalInfoActivity.this, "没有找到储存目录", Toast.LENGTH_LONG).show();                e.printStackTrace();            }        } else {        }    }

然后在返回中处理

String path = Environment.getExternalStorageDirectory()                    + "/FollowMePhoto"+"/" + mTakePhotoName;            File f = new File(path);            try {                //检测图片是否旋转了,如果旋转,则旋转回来                int degree = PictureUtil.getBitmapDegree(path);                if(degree != 0) {                    Bitmap bitmap = PictureUtil.rotateBitmapByDegree(BitmapUtil.getBitmap(path), degree);                    Uri takePhotoUri = UriUtil.getUriFromBitmap(this, bitmap);                    if(null != takePhotoUri)                        cropImageUri(takePhotoUri, Constants.ActivityReturnReuqestCode.HEAD_PORTRAIT_CROP);                } else {//                    long pictureSize = f.getTotalSpace() / 1024 / 1024 / 1024;                    LogUtils.i("Picture size = " + pictureSize);                    LogUtils.i("Picture url = " + path);                    Uri takePhotoUri = Uri.parse("file:" + path);//                    Uri takePhotoUri = Uri.parse(android.provider.MediaStore.Images.Media.insertImage(getContentResolver(),//                            f.getAbsolutePath(), null, null));                    cropImageUri(takePhotoUri, Constants.ActivityReturnReuqestCode.HEAD_PORTRAIT_CROP);                }            } catch (Exception e) {                e.printStackTrace();            }
这样就不会有第一种方式去处理Bitmap而产生的OOM呢,从选择图片到切图界面速度也会快一点。


更多相关文章

  1. android上传图片到七牛云存储demo
  2. Android引导页播放视频——使用VideoView
  3. android实现Uri获取真实路径转换成File的方法
  4. Android(安卓)Adb指令
  5. 初学Android,图形图像之使用Path类
  6. MAC中设置android adb环境变量
  7. android studio git使用问题记录
  8. Android的路径信息
  9. 使用原始的HTTP拼凑请求的方式上传多张图片

随机推荐

  1. js中的循环和php循环的区别
  2. 数字金额转大写文字
  3. PHP:实例演示PHP模块加载和JavaScript和P
  4. PHP第一课
  5. 210406 类数组 获取遍历DOM元素 向元素添
  6. IOC 控制反转与 DI 依赖注入
  7. 基于Redis实现PHP消息队列
  8. 函数编写2的平方的阶乘加3的平方的阶乘
  9. 对企业来说,坚果云和亿方云哪个好?
  10. ContOS下Firewalld的相关命令