当前位置: 代码迷 >> Android >> android图片截取的两种形式
  详细解决方案

android图片截取的两种形式

热度:42   发布时间:2016-04-28 05:10:47.0
android图片截取的两种方式

    文章主要提供android系统上拍照图片截取和图片 选择截取 两种方式,适用于app头像选择等环境。微笑

拍照截取

打开相机

  Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

            startActivityForResult(intent,“自定义”);

截图

Intent intent = getCropImageIntent(data);

    startActivityForResult(intent, “自定义”);

处理获取到的图片

public static Intent getCropImageIntent(Bitmap data) {

    Intent intent = new Intent("com.android.camera.action.CROP");

    intent.setType("image/*");

    intent.putExtra("data", data);

    intent.putExtra("crop""true");

    intent.putExtra("aspectX", 1);

    intent.putExtra("aspectY", 1);

//    intent.putExtra("outputX", 300);

//    intent.putExtra("outputY", 300);

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

    intent.putExtra("outputFormat""JPEG");

    return intent;

}

取得数据

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    // TODO Auto-generated method stub

    switch(requestCode){

        // xxxxx

        Bitmap photo = data.getParcelableExtra("data");

    }

}

 

选择截取

关键代码

 Intent innerIntent = new Intent(Intent.ACTION_GET_CONTENT);  

        innerIntent.putExtra("crop""true");// 剪辑方框

        innerIntent.putExtra("aspectX", 1); // 放大和缩小  

        innerIntent.putExtra("aspectY", 1); // 如果aspectXaspectY同时设置为相同值的话则为矩形

        innerIntent.setType("image/*"); // 查看类型 详细的类型在 com.google.android.mms.ContentType   

          

        tempFile=new File("/sdcard/"+Calendar.getInstance().getTimeInMillis()+".jpg"); // 以时间秒为文件名  

        File temp = new File("/sdcard/");//目录文件夹,如果不存在则创建  

        if (!temp.exists()) {  

            temp.mkdir();  

        }  

        innerIntent.putExtra("output", Uri.fromFile(tempFile));  //传入目标文件     

        innerIntent.putExtra("outputFormat""JPEG"); //文件格式    

          

        Intent wrapperIntent = Intent.createChooser(innerIntent, "先择图片"); //开始 并设置标题  

        startActivityForResult(wrapperIntent, 1); // 设置返回 码为 1  与onActivityResult

 //调用成功反回方法  

    @Override  

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {  

        super.onActivityResult(requestCode, resultCode, data);  

        switch (requestCode) {  

        case 1:  

//        这里处理逻辑

            break;  

        }  

    }  

权限

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  

    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />  


  相关解决方案