欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

使用Java代码在Android中实现图片裁剪功能

程序员文章站 2023-11-18 11:51:34
前言 android应用中经常会遇到上传相册图片的需求,这里记录一下如何进行相册图片的选取和裁剪。 相册选取图片 1. 激活相册或是文件管理器,来获取相片,代码如下:...

前言
android应用中经常会遇到上传相册图片的需求,这里记录一下如何进行相册图片的选取和裁剪。

相册选取图片
1. 激活相册或是文件管理器,来获取相片,代码如下:

 private static final int take_picture_from_album = 1; 
 private void takepicturefromalbum() { 
  intent intent = new intent(intent.action_get_content); 
  intent.settype("image/*"); 
  startactivityforresult(intent, take_picture_from_album); 
 } 

2. 通过startacitivityforresult()方法,我们可以在onacitivityresult()中来获取图片的uri,然后将图片的uri传递给图片裁剪函数,代码如下:

 @override 
 protected void onactivityresult(int requestcode, int resultcode, intent data) { 
  if (resultcode == activity.result_ok) { 
   switch (requestcode) { 
   case take_picture_from_album: 
    if (data != null) { 
     croppicturefromalbum(data.getdata()); 
    } 
    break; 
   case picture_crop_code: 
    if (data != null) { 
     // 这是裁剪后图片的bitmap 
     bitmap bitmap = data.getparcelableextra("data"); 
    } 
    break; 
   default: 
    break; 
   } 
  } 
 } 
  
 private static final int take_picture_from_album = 1; 
  
 private void takepicturefromalbum() { 
  intent intent = new intent(intent.action_get_content); 
  intent.settype("image/*"); 
  startactivityforresult(intent, take_picture_from_album); 
 } 
  
 private static final int picture_crop_code = 2; 
  
 private void croppicturefromalbum(uri pictureuri) { 
  intent intent = new intent("com.android.camera.action.crop"); 
  intent.setdataandtype(pictureuri, "image/*"); 
  intent.putextra("crop", "true"); 
  // 裁剪框比例 
  intent.putextra("aspectx", 1); 
  intent.putextra("aspecty", 2); 
  
  // 裁剪后输入图片的尺寸大小 
  intent.putextra("outputx", 300); 
  intent.putextra("outputy", 300); 
  
  // 取消人脸识别 
  intent.putextra("nofacedetection", true); 
  
  intent.putextra("return-data", true); 
  
  startactivityforresult(intent, picture_crop_code); 
 } 

3. 在onactivityresult里,通过data.getparcelableextra("data")可以获取图片裁剪之后的bitmap,之后就可以将bitmap赋值给图片控件了。