使用系统自带的intent来实现拍照,相册选择图片后剪切功能时,会遇到返回崩溃的问题。

原因是设置如下属性时,

intent.putExtra("return-data", true);

通过Intent中的data来传递,当数据过大,即超过1M(经测试,这个数值在不同手机还不一样)时就崩了!!!!

解决方法是:通过uri来传递,然后在转换成Bitmap。直接上代码:

/**
 * Created by lipeng on 2016/12/5.
 */

public class CutPictureUtils {private Activity activity;
    public final int CROP_ACTIVITY_RESULT=3;
    public CutPictureUtils(Activity activity){this.activity=activity;
    }private Uri imageUri=Uri.parse("file:///sdcard/temp.jpg");

    /*
    * 剪切图片
    */
    public Uri crop(Uri uri) {// 裁剪图片

        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(uri, "image/*");
        intent.putExtra("crop", "true");
        intent.putExtra("aspectX", 1);
        intent.putExtra("aspectY", 1);
        intent.putExtra("outputX", 600);
        intent.putExtra("outputY", 500);
        intent.putExtra("scale", true);
        intent.putExtra("return-data", false);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
        intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
        intent.putExtra("noFaceDetection", false); // no face detection
        activity.startActivityForResult(intent, CROP_ACTIVITY_RESULT);

        return imageUri;
    }public Bitmap decodeUriAsBitmap(Uri uri){Bitmap bitmap = null;
        try {bitmap = BitmapFactory.decodeStream(activity.getContentResolver().openInputStream(uri));
        } catch (FileNotFoundException e) {e.printStackTrace();
            return null;
        }return bitmap;
    }
}

使用(点击选择照片事件调用gallery,拍照同理):

private void gallery() {// 激活系统图库,选择一张图片Intent intent = new Intent(Intent.ACTION_PICK, null);intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*");// 开启一个带有返回值的Activity,请求码为PHOTO_REQUEST_GALLERYstartActivityForResult(intent, 2);}CutPictureUtils cutPictureUtils=new CutPictureUtils(******Activity.this);@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {if (requestCode == 2) {if (data != null) {// 得到图片的全路径Uri uri = data.getData();imageUri=cutPictureUtils.crop(uri);}} else if (requestCode == cutPictureUtils.CROP_ACTIVITY_RESULT) {// 从剪切图片返回的数据if(imageUri != null){Bitmap bitmap = cutPictureUtils.decodeUriAsBitmap(imageUri);if (bitmap != null) {//bitmap类型图片使用}}}super.onActivityResult(requestCode, resultCode, data);}

临时写的,如有不足,见谅

解决Android图片剪切返回崩溃问题相关推荐

  1. 图片剪切空指针崩溃问题在Android 6.0系统出现

    软件在上传头像的时候有个图片剪切功能,本来一直没有问题的,后来公司有个同事买了部nexus手机,运行后发现图片剪切后崩溃,后来发现问题并解决 在这里记录一下 public static Bitmap ...

  2. Android 6.0系统中图片剪切空指针崩溃问题解决纪录

    软件在上传头像的时候有个图片剪切功能,本来一直没有问题的,后来公司有个同事买了部nexus手机,运行后发现图片剪切后崩溃,后来发现问题并解决 在这里记录一下 public static Bitmap ...

  3. android 图片剪切组件,Android 图片裁剪库 uCrop

    软件介绍 uCrop 是[Yalantis](https://yalantis.com/) 组织开源的图片裁剪库, 支持缩放, 旋转图片, 支持各种比例的裁剪框, 非常强大的一个图片裁剪库. 使用 1 ...

  4. Android7.0相机图册图片剪切封装 - ucrop框架

    说明: * 两天使用 ucrop框架 实现了从相册和图册选择图片,然后剪切返回显示的功能.同时兼容了相机拍照7.0. * 对相机调用.相册调用.图片剪切封装成了工具类. * 剪切图片框架ucrop我也 ...

  5. android 拍照 图片剪切

    对于照片拍照上传应该有很多新手不是很清楚,这里我把我多方学习的代码分享给大家. 图片剪切代码 上传 这里是拍照不裁剪的代码 package com.rui.cameratest;import java ...

  6. Android之给图片去色,返回灰度图片以及ColorMatrix中setSaturation方法的用法

    原图: 效果图: 实现以上效果其实很简单,直接上代码: public class MainActivity extends Activity {private Button btn_start;pri ...

  7. 解决android客户端上传图片到服务端时,图片损坏的问题

    解决android客户端上传图片到服务端时,图片损坏的问题 参考文章: (1)解决android客户端上传图片到服务端时,图片损坏的问题 (2)https://www.cnblogs.com/cnbl ...

  8. Android手机内存图片读取,有效解决Android加载大图片内存溢出的问题

    今天在交流群里,有人问我他经常遇到加载图片时内存溢出的问题,遇到的情况还是在自己的测试机或者手机里没有问题,做好了, 到了客户手机里就内存溢出了.其实有时候不同的手机和不同的系统对内存的要求不一样,尤 ...

  9. android背景图拉伸,解决android:background背景图片被拉伸问题

    解决android:background背景图片被拉伸问题 ImageView中XML属性src和background的区别: background会根据ImageView组件给定的长宽进行拉伸,而s ...

  10. android设置背景图片不填充整个_Android应用开发之android解决背景图片平铺拉伸问题...

    本文将带你了解Android应用开发之android解决背景图片平铺拉伸问题,希望本文对大家学Android有所帮助 最近开发时遇到一个问题: 使用一条图片(1200x128)平铺作为背景,测试机型是 ...

最新文章

  1. 年终盘点:2021年AI领域值得关注的十件事
  2. 训练深度学习网络时候,出现Nan是什么原因,怎么才能避免?——我自己是因为data有nan的坏数据,clear下解决...
  3. 【SVM】通过SVM对数据进行训练和分类测试,matlab仿真
  4. Python使用aiohttp异步爬取糗事百科
  5. Android TextView 属性设置
  6. mysql int(3)_MySQL中int(11)与int(3)的区别_MySQL
  7. 大数据之-Hadoop3.x_Hadoop_HDFS_掉线时限参数设置---大数据之hadoop3.x工作笔记0079
  8. python networkx 求图中的环_python – 在NetworkX图中获取连接的节点
  9. SQL SERVER 高效存储过程分页(Max/Min方法)
  10. 中转换成list集合_Java集合、数组与泛型中的几个陷阱,你掉进了几个?
  11. 【CF551D】GukiZ and Binary Operations
  12. 请善待身边的 IT 狗
  13. 计算机组成原理完整学习笔记(二):系统总线
  14. scratch python插件_Scratch3.0设计的插件系统(上篇)
  15. java学习之打印菱形和空心菱形
  16. 华为ensp ospf配置
  17. 机器视觉检测技术之颜色视觉工具应用
  18. [张雨生][张雨生典藏合集22CD][APE/整轨/7.56 GB][旋风/快传]
  19. 随机森林实例:利用基于CART算法的随机森林(Random Forest)树分类方法对于红酒质量进行预测
  20. 关于Trigger的介绍

热门文章

  1. Java实现读取txt文件数据并导入数据库
  2. 邮件发送与接收,支持163邮箱、outlook邮箱、exchange邮箱
  3. vue 右键 单击 事件
  4. module java.base does not “opens java.lang“ to module spring.core
  5. 浅谈自然语言处理(NLP)学习路线(一)--- 概述
  6. 论文复现:Expressive Body Capture
  7. 解决ffmpeg合并视频后播放条拖不动,画面出错的问题
  8. 在github上写脚注的方法 markdown
  9. matlab三个坐标,[MATLAB基础] 画有一个有xyz三个坐标的图
  10. iOS集成支付宝支付 Alipay