照相与相册裁剪 bitmap转file

private String path=Environment.getExternalStorageDirectory()+"/header_image.png";

Intent intent_takePhoto=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        if (hasSdcard()){//判断SD卡是否可用
            //存放到内存中
            intent_takePhoto.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(path)));
        }
        startActivityForResult(intent_takePhoto, PHOTO_FLAG);

//打开相册
    private void getCamera(){
        Intent intent_choosePhoto=new Intent(Intent.ACTION_PICK);
        intent_choosePhoto.setType("image/*");
        startActivityForResult(intent_choosePhoto,CAMERA_FLAG);
    }

//裁剪图片
    private void 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",250);
        intent.putExtra("outputY",250);
        //将图片返回给data
        intent.putExtra("return-data",true);
        startActivityForResult(intent,CAIJIAN_FLAG);
    }

@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        if (requestCode==PHOTO_FLAG&&resultCode==RESULT_OK){//相机返回的数据
            if (hasSdcard()){
                crop(Uri.fromFile(new File(path)));
            }else{
                Toast.makeText(EvaluatActivity.this, "未找到存储啦,无法存储照片", Toast.LENGTH_SHORT).show();
            }
        }else if (requestCode==CAMERA_FLAG&&resultCode==RESULT_OK){//相册返回的数据
            //得到图片的全路径
            if (data!=null){
                Uri uri = data.getData();
                crop(uri);
            }
        }else if(requestCode==CAIJIAN_FLAG&&resultCode==RESULT_OK){//剪切回来的照片数据
            if (data!=null){
                Bitmap bitmap = data.getParcelableExtra("data");
                 List<Object> list=new ArrayList<>();
                list.add(bitmap);
                imageAdapter.setList(list);
                String img_path = bitmapToString(bitmap);
                first_file = new File(img_path);

                file_list.add(first_file);
            }

         }
     super.onActivityResult(requestCode, resultCode, data);
    }

//bitMap转换为file(转file不一定对)
      public String bitmapToString(Bitmap bitmap){
        //将bitmap转换为uri
        Uri uri = Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, null,null));

        String[] proj = { MediaStore.Images.Media.DATA };

        Cursor actualimagecursor = managedQuery(uri,proj,null,null,null);

        int actual_image_column_index = actualimagecursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

        actualimagecursor.moveToFirst();

        String img_path = actualimagecursor.getString(actual_image_column_index);
        return img_path;
    }

//判断SD卡是否挂载
    public boolean hasSdcard(){
        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
            return true;
        }else{
            return false;
        }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值