• 拍照+相册+截取图片


    一、拍照+截取

    拍照:

     mStorageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);//获取存储器的专门放图片的区域
     uri = Uri.fromFile(new File(mStorageDir.getPath()+System.currentTimeMillis()+".png")); //在该区域创建文件,并转换为uri格式
     Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                    //将图片处理的数据传递到uri上
                    intent.putExtra(MediaStore.EXTRA_OUTPUT,uri);
                    //在Dialog中,必须这样使用,才能回调到Activity上
                    ((Activity)mContext).startActivityForResult(intent,REQUST_PHOTO);
    拍照

    拍照完之后回调

    Activity.onActivityResult()

    if(requestCode == ImageDialog.REQUST_PHOTO){
         //截取图片   第一个参数就是刚才的uri
       cropImageUri(ImageDialog.uri,800,600,REQUST_CRAP);
    } 
    
     private void cropImageUri(Uri uri, int outputX, int outputY, int requestCode){
            Intent intent = new Intent("com.android.camera.action.CROP");
            intent.setDataAndType(uri, "image/*");
            intent.putExtra("crop", "true");
            intent.putExtra("aspectX", 2);
            intent.putExtra("aspectY", 1);
            intent.putExtra("outputX", outputX);
            intent.putExtra("outputY", outputY);
            intent.putExtra("scale", true);
            intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
            intent.putExtra("return-data", false);
            intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
            intent.putExtra("noFaceDetection", true); // no face detection
            //发现截取完图片,还需要再次回调
            startActivityForResult(intent, requestCode);
        }
    View Code

    在从onActivityResult()中保存图片,到地址

    else if (requestCode == REQUST_CRAP){
         Bitmap bitmap = decodeUriAsBitmap(data.getData());
         imageView.setImageBitmap(bitmap);
        }
    
    
    
    
    private Bitmap decodeUriAsBitmap(Uri uri){
            Bitmap photo = null;
            Uri photoUri = uri;
            if (photoUri != null) {
                //根据uri地址获取Bitmap
                photo = BitmapFactory.decodeFile(photoUri.getPath());
            }
            Log.d(TAG,photoUri.getPath());
            if (photo == null) {
                //将图片生成jpeg
                ByteArrayOutputStream stream = new ByteArrayOutputStream();
                photo.compress(Bitmap.CompressFormat.JPEG, 100, stream);
            }
            return photo;
        }
    View Code

    二、从相册中选择+截取

       Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
                  //表明选择的是image类型
                    intent.setType("image/*");
    
                    intent.putExtra("crop", "true");
                    //截取的比例
                    intent.putExtra("aspectX", 2);
    
                    intent.putExtra("aspectY", 1);
                   //输出的像素
                    intent.putExtra("outputX", 600);
    
                    intent.putExtra("outputY", 300);
    
                    intent.putExtra("scale", true);
    
                    intent.putExtra("return-data", false);
    
                    intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
    
                    intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
    
                    intent.putExtra("noFaceDetection", true); // no face detection
    
                    ((Activity)mContext).startActivityForResult(intent, REQUEST_GALLERY);        
    View Code

    之后的步骤跟上面相同

  • 相关阅读:
    《数据结构与算法Python语言描述》习题第二章第三题(python版)
    mysql中的视图
    mysql中列的增删改
    php隐藏WEBSHELL技巧
    php webshell常见函数
    MySQL join 用法
    BurpSuite 设置Hostname Resolution
    Linux mint 18.1 / Ubuntu 16.04 安装steam
    Linux SCIM/fcitx/ibus 输入法
    mysql 复制表结构 / 从结果中导入数据到新表
  • 原文地址:https://www.cnblogs.com/rookiechen/p/5538163.html
Copyright © 2020-2023  润新知