android图片截取的两种形式

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); // 如果aspectX和aspectY同时设置为相同值的话则为矩形

    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" />  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值