当前位置: 代码迷 >> Android >> Android照相、相册选取、裁剪图片
  详细解决方案

Android照相、相册选取、裁剪图片

热度:67   发布时间:2016-04-28 06:18:48.0
Android拍照、相册选取、裁剪图片
具体需求是:拍照或相册选取完毕后,先进入系统裁剪界面,裁剪完毕后再显示或保存图片,下面看下截图部分所要调用的代码:
    //截取图片      public void cropImage(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");          //裁剪框的比例,1:1          intent.putExtra("aspectX", 1);            intent.putExtra("aspectY", 1);          //裁剪后输出图片的尺寸大小          intent.putExtra("outputX", outputX);             intent.putExtra("outputY", outputY);          //图片格式          intent.putExtra("outputFormat", "JPEG");          intent.putExtra("noFaceDetection", true);          intent.putExtra("return-data", true);            startActivityForResult(intent, requestCode);      } 

例如,从相册选择图片后先调用裁剪功能代码如下:
Intent openAlbumIntent = new Intent(Intent.ACTION_GET_CONTENT);  openAlbumIntent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");  startActivityForResult(openAlbumIntent, REQUEST_CODE);

接下来在onActivityResult里面对裁剪后的图片进行处理,调用上面的cropImage()方法,将URI传入,500是指定裁剪后图片的尺寸,最后一个参数为标识码:
Uri uri = data.getData();  cropImage(uri, 500, 500, CROP_PICTURE);

处理裁剪后的图片就和之前一样,这里只贴出代码片段仅供参考:
case CROP_PICTURE:      Bitmap photo = null;      Uri photoUri = data.getData();      if (photoUri != null) {           photo = BitmapFactory.decodeFile(photoUri.getPath());      }      if (photo == null) {          Bundle extra = data.getExtras();          if (extra != null) {               photo = (Bitmap)extra.get("data");                 ByteArrayOutputStream stream = new ByteArrayOutputStream();                 photo.compress(Bitmap.CompressFormat.JPEG, 100, stream);          }        }      iv_image.setImageBitmap(photo);  break;

  相关解决方案