• android 调用系统相机获取图片、调用系统相册获取图片,并对图片进行截取


    打开系统相册获取图片并截取,代码相对简单

     1 Intent intent = new Intent(Intent.ACTION_GET_CONTENT,null);
     2         intent.setType("image/*");
     3         intent.putExtra("crop", "true");
     4 
     5                 //WIDTH 和 HEIGHT指的是截取框的宽高比例,如设WIDTH = 1,HEIGHT = 1,截取框就为正方形
     6         intent.putExtra("aspectX", WIDTH);
     7         intent.putExtra("aspectY", HEIGHT);
     8 
     9                 //OUTPUT_X和OUTPUT_Y指的是图片的宽高,可根据实际需要设值
    10         intent.putExtra("outputX", OUTPUT_X);
    11         intent.putExtra("outputY", OUTPUT_Y);
    12         intent.putExtra("scale", true);
    13 
    14                 //return-data 指是否在onActivityResult方法中返回数据
    15         intent.putExtra("return-data", true);
    16         intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
    17 
    18         intent.putExtra("noFaceDetection", true);
    19 
    20                 //TO_GALLERY_REQUEST为请求码,可自己设定
    21         startActivityForResult(intent, TO_GALLERY_REQUEST);        

    打开系统相机,照相并进行截取

    对于相机拍出来的图片,首先把图片保存在SD卡中,并通过保存之后的路径读取并截图

    1.打开相机拍照

     1 File imageFile = new File(file.getPath()+"/AviationBoss");//获取保存图片的文件夹路径
     2 
     3                         //若文件夹不存在,则创建
     4             if(!imageFile.exists()){
     5                 imageFile.mkdirs();
     6             }
     7 
     8                         //获取保存之后的图片路径,默认以当前时间为文件命名
     9             imageUri = Uri.fromFile(new File(imageFile, CharacterParser.getDateStr_2(System.currentTimeMillis())+".jpg"));
    10 
    11                         //打开相机,设置保存路径
    12             Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    13             intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
    14                         //TO_CAMERA_REQUEST为打开相机的请求码
    15             startActivityForResult(intent, TO_CAMERA_REQUEST);    

    2.获取拍照之后的图片,进行截取,首先写个方法

    /*
    *该方法是为了截取图片使用
    *参数 uri为图片的路径
    *width 和 height为截取框宽高的比例
    *outputX 和 outputY为图片的宽高
    *requestCode为截取图片的请求码
    */
    private void toCropImage(Uri uri,int width,int height,int outputX,int outputY,int requestCode){
            Intent intent = new Intent("com.android.camera.action.CROP");
            intent.setDataAndType(uri, "image/*");//设置图片uri
            intent.putExtra("crop", "true");
            intent.putExtra("aspectX", width);
            intent.putExtra("aspectY", height);
            intent.putExtra("outputX", outputX);
            intent.putExtra("outputY", outputY);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);//设置截取完成后保存图片的地址
            intent.putExtra("return-data", false);//这里由于是从sd卡直接获取图片,所以不需要通过onActivityResult方法获取数据
            intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
            intent.putExtra("noFaceDetection", true);
            startActivityForResult(intent, requestCode);
        }

    3.当拍照完成后,返回到activity的onActivityResult方法,在这里进行判断

     1 @Override
     2     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     3         // TODO Auto-generated method stub
     4         super.onActivityResult(requestCode, resultCode, data);
     5         switch(requestCode){
     6         case TO_CAMERA_REQUEST://拍照后返回的结果
     7             //调用CropImage方法进行截取图片
     8             toCropImage(imageUri, WIDTH, HEIGHT, OUTPUT_X, OUTPUT_Y, TO_CROP_REQUEST);
     9             break;
    10         case TO_GALLERY_REQUEST://通过系统相册获取到图片并进行截取后的返回值
    11             if(data!=null){
    12                 Bitmap bitmap =data.getParcelableExtra("data");//通过相册获取到的图片,直接通过data得到
    13             }
    14             break;
    15         case TO_CROP_REQUEST://调用toCropImage方法截取图片后的返回值
    16             Bitmap bitmap = decodeUriAsBitmap(imageUri);//通过相机拍到的图片,通过图片uri获得
    17             break;
    18         }
    19     }

    至此,就可通过两种方式获取图片。

  • 相关阅读:
    bzoj1093[ZJOI2007]最大半连通子图(tarjan+拓扑排序+dp)
    tarjan强连通分量模板(pascal)
    二分图最小顶点覆盖数=最大匹配数的证明
    poj3041 Asteroids(二分图最小顶点覆盖、二分图匹配)
    bzoj4196[Noi2015]软件包管理器
    AEAI Portal 权限体系说明
    未来70%的人类将会失业
    工作中高效学习的方法
    如何正确的做事
    你真的会沟通吗? --下部
  • 原文地址:https://www.cnblogs.com/dcxz/p/3799187.html
Copyright © 2020-2023  润新知